Let’s be real for a second. Trying to scrape Instagram manually is a nightmare. They change their CSS class names more often than I change my socks, and rate limits on the frontend are brutal. If you’re trying to build a dashboard to track influencers, monitor competitors, or just display a feed on a lobby screen, you need a stable JSON stream, not a fragile web scraper.
We’re going to build a simple content dashboard using SteadyAPI. We'll focus on finding a user, grabbing their profile stats (to calculate engagement), and pulling their high-res media.
Obtain API key
The Setup
Before writing code, you need an API key. You pass this in the header of every request.
Header:
Authorization: Bearer {YOUR_AUTH_KEY}
Check out the Authentication docs if you get stuck here. Also, keep in mind the Rate Limit is 15 requests/sec, which is plenty for a dashboard application.
Step 1: Find Your Target
You might know the username, but sometimes you need to verify it or find related accounts. The Search endpoint is your entry point. It gives you the internal id and the username, which confirms the account exists before you try to pull data.
Endpoint
GET /v1/instagram/search
Docs: SteadyAPI Docs: Instagram General Search
The Request
curl --request GET \
--url 'https://api.steadyapi.com/v1/instagram/search?search=mrbeast' \
--header 'Authorization: Bearer {YOUR_AUTH_KEY}'
What you get back
The API returns a list of users matching that string. You want to grab the username or id from the top result.
{
"body": [
{
"id": 2278169415,
"username": "mrbeast",
"full_name": "MrBeast",
"is_verified": true,
"profile_pic": "https://..."
}
]
}
Key Fields
id
The internal Instagram account identifier required for deeper lookups
username
The confirmed public handle of the account
is_verified
Indicates whether the profile is officially verified
profile_pic
CDN URL for the user’s profile image
Step 2: Get The "Vitals" (Profile Stats)
A dashboard isn't useful without context. Is this post performing well relative to their follower count? To know that, we need the profile metadata.
Endpoint
GET /v1/instagram/profile
Docs: SteadyAPI Docs: Instagram Profile
You simply pass the username parameter. This gives you the follower count, which is the denominator for engagement rate calculations.
Step 3: The Content Feed (The Heavy Lifting)
This is the core of the dashboard. We want the images, the video clips, the captions, and the like counts.
Endpoint
GET /v1/instagram/posts
Docs: SteadyAPI Docs: Instagram Posts Feed
Code Implementation
Python
import requests
url = "https://api.steadyapi.com/v1/instagram/posts"
headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}"
}
params = {
"username": "mrbeast"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
for post in data['body']:
print(f"Post ID: {post['shortcode']}")
print(f"Likes: {post['like_count']}")
print(f"Media: {post['media_url']}")
print("---")
JavaScript (Node / Browser)
const url = new URL("https://api.steadyapi.com/v1/instagram/posts");
url.searchParams.append("username", "mrbeast");
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json"
};
fetch(url, { method: "GET", headers })
.then(response => response.json())
.then(data => {
data.body.forEach(post => {
console.log(`Caption: ${post.caption}`);
console.log(`Image: ${post.thumbnail_url}`);
});
})
.catch(console.error);
PHP
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request(
'GET',
'https://api.steadyapi.com/v1/instagram/posts',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'username' => 'mrbeast',
],
]
);
$body = json_decode($response->getBody(), true);
foreach ($body['body'] as $post) {
echo "Likes: " . $post['like_count'] . "\n";
}
?>
The Data Structure
{
"id": "3627347799613702778",
"shortcode": "DJW7ZrwxQJ6",
"media_type": 2,
"product_type": "clips",
"caption": "It's my Birthday so I'm giving away...",
"like_count": 8413943,
"comment_count": 7327981,
"media_url": "https://...",
"thumbnail_url": "https://...",
"permalink": "https://www.instagram.com/p/DJW7ZrwxQJ6/"
}
Key fields for your dashboard
thumbnail_url
Use this for grid view loading speed
media_url
Full-resolution media for detail view
like_count & comment_count
Engagement overlays for dashboard cards
product_type
Detect Reels (clips) vs images
3 Real-World Use Cases
Influencer Vetting Tool
Build an engagement calculator using /v1/instagram/posts + /v1/instagram/profile.
Digital Signage
Fetch brand content hourly and display using direct media_url.
Competitor Watchlist
Combine /v1/hashtags/search with /v1/instagram/search to monitor trends.
Handling Pagination
If you need more posts, use the pagination token from:
"meta": {
"pagination_token": "Mzc2NDYwNjAyMzkzNjgwMTQ4Ml8yMjc4MTY5NDE1...",
"count": 12
}
Then request:
?pagination_token=YOUR_TOKEN
That’s it. No headless browsers, no IP bans, just JSON.
Go build something cool.
Learn more or explore other endpoints:
SteadyAPI Docs Home