Skip to content
ScrapeField

Instagram scraper API

Profiles, account search, posts, Reels, comments and hashtags, with the field names Instagram’s own Graph API uses. No login or cookies of yours. Blocks handled; nothing for you to unblock.

Endpoints
6
From
3 credits a call
Returns
profile, search result, post, comment
instagram.com/p/C8xYz1AbCdE
Bblue.door.coffee· Follow

930 likes

blue.door.coffee Same corner, four years apart. #filmphoto #baking

View all 21 comments

September 14

Extracted data

  1. 1username "blue.door.coffee"
  2. 2like_count 930
  3. 3caption "Same corner, four years apart. #filmphoto #…
  4. 4comments_count 21
  5. 5timestamp "2026-09-14T07:10:08.000Z"
  6. media_type "IMAGE"
  7. shortcode "C8xYz1AbCdE"
  8. hashtags ["filmphoto","baking"]

Try it now

Every Instagram endpoint, as an MCP tool, as a REST call, or as a question in plain English. Each one runs against the live API in demo mode — no key, no account. For an agent: the Instagram MCP server.

POSThttps://scrapefield.com/mcp
6 tools
Transport
HTTP, JSON-RPC 2.0
Methods
initialize · tools/list · tools/call
Auth
Bearer key (or none for demo mode)
claude mcp add --transport http scrapefield https://scrapefield.com/mcp

What people build with it

Three worked examples, each with the calls it makes and what a run costs — multiplied out from the published price of every call.

01

Find creators through a hashtag

Take the recent posts under a hashtag, collect the accounts behind them, and read each profile. Keep the ones in the follower band you pay for — with their bio links, so the outreach address is already on the row.

The calls, and what each costs
GET instagram/hashtag× 164 cr
GET instagram/profile× 2472 cr
per hashtag136 cr

≈ $0.081 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const q = { tag: 'sourdough', limit: 24 };
const { data: posts } = await sf('instagram/hashtag', q);
const handles = [...new Set(posts.map((p) => p.username))];
const creators = [];

for (const username of handles) {
  const { data: p } = await sf('instagram/profile', { username });
  if (p.followers_count >= 10_000 && p.followers_count <= 100_000) {
    const { followers_count, media_count, bio_links } = p;
    creators.push({ username, followers_count, media_count, bio_links });
  }
}
02

Check a campaign actually ran

A day after each sponsored post goes live, and again a week later, fetch it by its shortcode: is it still up, does it tag you, is it labelled as a paid partnership, and what did it get. A deleted post shows up as an error you can report — and is not charged.

The calls, and what each costs
GET instagram/post× 60180 cr
a 30-post campaign, checked twice180 cr

≈ $0.107 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const report = [];

for (const shortcode of campaignPosts) {
  const { data: p, error } = await sf('instagram/post', { shortcode });
  if (error) {
    report.push({ shortcode, live: false, reason: error.code });
    continue;
  }

  report.push({
    shortcode, live: true,
    tagged: p.mentions.includes('yourbrand'),
    labelled: p.is_paid_partnership,
    likes: p.like_count, // null if the creator hid it
    comments: p.comments_count,
    views: p.view_count,
  });
}
03

Read every comment on a post

Page through the comments fifty at a time until you have them all — author, text, date, likes and reply count each — and hand them to a sentiment model or a spreadsheet.

The calls, and what each costs
GET instagram/comments× 1030 cr
per post, 500 comments30 cr

≈ $0.018 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const comments = [];
let cursor;

do {
  const q = { shortcode, limit: 50 };
  if (cursor) q.cursor = cursor;
  const { data, meta } = await sf('instagram/comments', q);
  comments.push(...data);
  cursor = meta.next_cursor;
} while (cursor && comments.length < 500);

Everything that comes back

The complete response behind the Instagram view at the top of this page, from GET /v1/instagram/post — every field, including the ones that are null. Fields are named after Instagram's Graph API, so if you have read those docs you already know them. Every field of instagram_profile, instagram_search_result, instagram_post and instagram_comment is documented.

{
  "data": {
    "id": "3504321690910732144",
    "shortcode": "C8xYz1AbCdE",
    "permalink": "https://www.instagram.com/p/C8xYz1AbCdE/",
    "media_type": "IMAGE",
    "media_product_type": "FEED",
    "caption": "Same corner, four years apart. #filmphoto #baking",
    "timestamp": "2026-09-14T07:10:08.000Z",
    "username": "blue.door.coffee",
    "media_url": "https://cdn.example/ig/C8xYz1AbCdE.jpg",
    "thumbnail_url": null,
    "children": [],
    "video_duration": null,
    "like_count": 930,
    "comments_count": 21,
    "view_count": null,
    "hashtags": [
      "filmphoto",
      "baking"
    ],
    "mentions": [],
    "location": null,
    "is_paid_partnership": false
  },
  "meta": {
    "request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
    "credits_charged": 3,
    "credits_remaining": 74218,
    "cached": false,
    "fetched_at": "2026-09-20T09:12:03Z",
    "next_cursor": null
  }
}

Endpoints and prices

One published credit cost per endpoint, charged per call and refunded automatically when a call fails. See what a credit costs.

Instagram, specifically

The questions people ask about this platform before they call it. And how this compares with the platform’s own API: ScrapeField vs the Instagram API.

Are Reels included?
Yes, as posts: a Reel has media_product_type REELS, with its views in view_count and its length in video_duration.
Stories?
No. There is no stories endpoint — profiles, account search, posts, Reels, comments and hashtags only.
How many posts can I get from one account?
Up to 24 recent posts per call, with meta.next_cursor for the next page.
Does it need my Instagram login?
No. We never take a login, a cookie or a session for any platform, at any price. That is the point of the product.

The same key, four more platforms

One key, one balance and one invoice across all five — and each platform’s data in its own shape, because they are five different systems.

Your first Instagram call, in a minute

Get a key