Blog/data
1 min read

Instagram Profiles as Structured Data, One Call

Turn any public Instagram username into a clean JSON profile (bio, followers, verified flag, recent posts) from one endpoint on Monid, billed per result.

Instagram Profiles as Structured Data, One Call

Copy this line to your agent to turn an Instagram handle into a structured profile.

set up https://monid.ai/SKILL.md and use apify to pull a public Instagram profile as structured JSON from a username

Hand one public Instagram username to one endpoint on Monid and you get the whole profile back as clean JSON: display name, bio, follower and following counts, post count, the verified badge, the external link in the bio, the profile picture, and an overview of recent posts. No login, no session cookies, no browser farm, billed at a fraction of a cent per profile with the price shown before you run. Monid is a pay-per-call data API marketplace: one integration and one wallet reach hundreds of external data endpoints across web scraping, enrichment, social data, and search, and this is the endpoint we reach for whenever an Instagram handle needs to become a row in a table.

TL;DR

  • apify/instagram-profile-scraper takes a list of usernames and returns one structured profile record each, billed per result at a fraction of a cent (current price at monid.ai/tools).
  • The record carries the fields you actually act on: bio, external URL, follower and following counts, post count, verified flag, business category, and an overview of recent posts with captions, hashtags, and engagement.
  • The official Instagram Graph API cannot do this. It only reads accounts you own or manage and requires app review, so arbitrary public profiles are off limits.
  • Adding usernames to the same array is how you scale from one profile to thousands. Cost scales with rows, not with a seat license.
  • Monid ships as an MCP server, so an agent can call this endpoint itself the moment it holds a handle.

Why the official API is the wrong door

Reaching for Instagram's own API feels like the correct instinct and then it fails you at the first real request. The Instagram Graph API is built for a business to manage its own presence: it acts on behalf of accounts you own or administer, after your app clears Meta's review process and holds the right permissions. That design is right for scheduling your own posts and reading your own insights. It is useless the moment the profile you care about belongs to someone else, which is the entire job of creator discovery, competitor research, and lead qualification.

So teams fall back to logging in and scraping by hand: a real account, stored session cookies, a headless browser, and a proxy pool to keep the account from getting flagged. That stack breaks on every layout change and puts your login at risk. The endpoint below moves all of that off your plate. The provider on Apify owns the scraping infrastructure and the parser maintenance; you own one wallet and one input field.

Set up once

For agents

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More details in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add --label main --key <your-api-key>

More details in the CLI quickstart.

Five things worth knowing before you run it

1. One username in, one clean record out

The whole interface is a single required field, usernames, an array of the handles you want. apify/instagram-profile-scraper returns exactly one structured result per handle, billed per result. Here is the verified call:

monid run -p apify -e /apify/instagram-profile-scraper -i '{"usernames":["humansofny"]}' -w
# -> COMPLETED: one structured profile record
#    (name, bio, followers, verified, external url, recent posts)
#    billed per result

That is the entire contract. No auth block, no cursor, no pagination logic. A profile that used to mean a login and a fragile scraper is now a line you can put in a cron job.

One Instagram username, through the Apify profile scraper, returning structured fields: display name, bio, external URL, followers, following, posts count, verified badge, and recent posts

2. The fields you keep are the interesting ones

A profile record is only useful if the fields drive a decision. These are the ones we reach for:

  • Follower and following counts, and post count: the ratio and cadence together separate a real audience from a bought one better than follower count alone. A high follower count against a near-zero post count is a classic dropshipping or bot signal.
  • Verified flag and business category: the fastest filter when you are sorting a list into real brands, creators, and noise.
  • Bio and external URL: the bio holds contact intent and the external link is often the person's actual site, newsletter, or Linktree, which is the bridge from an Instagram handle to a real destination you can enrich further.
  • Recent posts overview: captions, hashtags, timestamps, and engagement on the latest media, enough to judge whether an account is active and on-topic without opening the app.
  • Profile picture URL: the asset you drop straight into a CRM row or a creator card.

You rank creators by median engagement, dedupe against handles you already track, and flag the accounts that pass. None of it requires a second lookup.

3. No login means nothing of yours is exposed

Because the scraping happens on the provider's infrastructure, your name is nowhere in the request. There is no Instagram account of yours to rate-limit, no cookie jar to refresh at 2am, and no browser fleet to keep patched. This is the practical reason to prefer a metered endpoint over rolling your own: the operational risk that used to be yours stays with the specialist who does it all day.

4. Pay per profile, so cost tracks exactly what you kept

Billing is per result, at a fraction of a cent per profile (current price at monid.ai/tools). That changes how you think about scale. Qualifying a list of a thousand handles is single-digit dollars, and you pay for the thousand rows you asked for, not for a seat, a monthly minimum, or a tier you half-use. Check the exact price and schema for free before you spend anything:

monid inspect -p apify -e /apify/instagram-profile-scraper
# -> input schema, docs, and per-result price (free)

One optional field, includeAboutSection, is a paid extra that adds account history like join date and country where the profile shared it. Leave it off unless you need it, and the base profile is all you pay for.

5. Batch and agent-shaped are the same call

Scaling up is not a different endpoint or a different pattern. You add more handles to the usernames array and the cost scales linearly with the rows returned. And because Monid is also an MCP server, an agent handed "profile these thirty creators and tell me which are verified and active" can call this endpoint directly, read the follower ratios and recent-post cadence, and hand back a ranked shortlist without you scripting a thing.

The Instagram Graph API path dead-ends on public profiles (own accounts only, then app review) while one Monid call turns any public username into structured profile JSON

What a creator-vetting pass actually costs

Put a shape on it. You have 500 Instagram handles from a hashtag sweep and you want to keep only the verified or clearly-real accounts with an active posting cadence. That is 500 results through this endpoint, which lands in low single-digit dollars, returned as 500 structured rows you can sort by follower-to-post ratio and verified flag in a spreadsheet. No subscription, no Meta app review, no login of yours anywhere in the loop. Scale it to a few thousand and it is still spend you approve without a meeting.

FAQ

Do I need an Instagram account or a Meta developer app? No. You integrate Monid once and fund one pay-as-you-go wallet. The provider handles Instagram access, proxies, and the parser maintenance. Your own credentials never enter the request.

Can I read profiles I do not own or manage? Yes, that is the whole point. Any public profile works, by username. The official Graph API is limited to accounts you own or administer and requires app review, which is exactly the wall this endpoint gets you around.

Does it return recent posts too, or just the header numbers? Both. Alongside the bio, counts, verified flag, and external URL, each record includes an overview of recent media with captions, hashtags, timestamps, and engagement, enough to judge whether an account is active and relevant.

How is this priced? Per result, at a fraction of a cent per profile, always shown before anything bills. Cost scales with the number of usernames you pass. Every current price is listed at monid.ai/tools.

Try it

Run a free monid inspect to see the schema and price, then pull a single handle you know well and check the follower count, bio, and verified flag against what Instagram shows you. When it matches, add the rest of your list to the array and let it run. Start at monid.ai.

dataagentssocial