ScrapeField

Instagram scraper API

Profiles, posts, Reels, comments and hashtags from public accounts, with the field names Instagram’s own Graph API uses. Blocks handled; nothing for you to unblock.

Endpoints
5
From
2 credits a call
Returns
profile, post, comment
instagram.com/p/ComS7CcReiX
Eexample· Follow

example Everything I learned about this in one minute. #roastery #sourdough

View all 15 comments

July 2

The same page, from the API sample data

  1. 1username "example"
  2. 2like_count 698
  3. 3caption "Everything I learned about this in one minu…
  4. 4comments_count 15
  5. 5timestamp "2026-07-02T00:20:55.000Z"
  6. +media_type "IMAGE"shortcode "ComS7CcReiX"hashtags ["roastery","sourdough"]in the response, not on the page

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.

POSThttps://scrapefield.com/mcp
5 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
Runs against the live server. No key, no account.
// press Call — the server lists its 5 tools,
// each with the schema an agent reads before calling it

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.

GET instagram/hashtag× 14 cr
GET instagram/profile× 2472 cr
per hashtag76 cr

≈ $0.045 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.

GET instagram/post× 60120 cr
a 30-post campaign, checked twice120 cr

≈ $0.072 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.

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_post and instagram_comment is documented.

{
  "data": {
    "id": "3915172784134357480",
    "shortcode": "ComS7CcReiX",
    "permalink": "https://www.instagram.com/p/ComS7CcReiX/",
    "media_type": "IMAGE",
    "media_product_type": "FEED",
    "caption": "Everything I learned about this in one minute. #roastery #sourdough",
    "timestamp": "2026-07-02T00:20:55.000Z",
    "username": "example",
    "media_url": "https://cdn.example/ig/ComS7CcReiX.jpg",
    "thumbnail_url": null,
    "children": [],
    "video_duration": null,
    "like_count": 698,
    "comments_count": 15,
    "view_count": null,
    "hashtags": [
      "roastery",
      "sourdough"
    ],
    "mentions": [],
    "location": null,
    "is_paid_partnership": true
  },
  "meta": {
    "request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
    "credits_charged": 2,
    "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.

Can I read private accounts?
No. Public accounts only — if a logged-out visitor cannot see it, we do not return it.
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 — posts, Reels, comments, hashtags and profiles 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, three more platforms

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

Your first Instagram call, in a minute

Get a key