grabd — the Instagram data API

The Instagram data API. A drop-in Apify alternative.

One request returns a public profile and its 12 latest posts — the exact shape of Apify’s instagram-profile-scraper. Change one URL.

  • No cold start
  • A fraction of the cost
  • Drop-in compatible
grabd --quickstart

One request. The whole profile.

Authenticate with an apikey header and hit a single endpoint. You get the profile and its 12 latest posts and reels back synchronously — no run to start, no dataset to poll. The field names match Apify’s instagram-profile-scraper one-to-one.

request
$ curl -H "apikey: $GRABD_KEY" \
  grabd.co/profile/leomessi
200 OK · application/json
{
  "id": "427553890",
  "username": "leomessi",
  "fullName": "Leo Messi",
  "followersCount": 512207927,
  "postsCount": 1522,
  "verified": true,
  "latestPosts": [{
    "type": "Video",
    "shortCode": "DZ_VUPItcc3",
    "likesCount": 6038573,
    "videoViewCount": 20183713,
    "timestamp": "2026-06-25T01:06:30.000Z"
  }, /* … 11 more */ ]
}
grabd --vs-apify

Less to learn. Less to run. Less to pay.

Apify is a whole platform. If all you need is Instagram profile data, most of it is overhead. grabd does the one thing — returns the same shape you already parse, in a single round trip, for a fraction of the price.

Apify actor grabd
Getting one profile Start an actor run, poll for status, then fetch the dataset items One GET request, JSON back in the same call
Response shape instagram-profile-scraper actor output (array of items) Identical field names — the single item, directly
Integration effort Actor IDs, run inputs, dataset endpoints, webhooks Set an apikey header, change one URL
Latency Cold actor starts, then polling, before you can read anything No cold start — data returns in the same call; ~5-min cache makes repeats instant
Pricing Compute units + actor rental + platform fees Usage-based, a fraction of the cost
grabd --features

Built for developers who just want the data.

  • drop-in

    Apify-compatible shape

    Field-for-field parity with the instagram-profile-scraper actor. If you read items[0], read the body instead — that’s the whole migration.

  • sync

    One synchronous endpoint

    GET /profile/:username. No actors to configure, no runs to start, no datasets to poll. Request in, JSON out.

  • posts

    Profile + 12 latest posts

    Followers, bio, verification and business fields, plus the 12 most recent posts and reels with captions, likes, views, and timestamps.

  • media

    Signed CDN media URLs

    Profile pictures, images, and video URLs come through as signed, time-limited CDN links — download promptly if you need to keep them.

  • limits

    Per-key rate limiting

    600 requests per minute per key by default, with standard rate-limit headers. A runaway loop can’t surprise you.

  • proxy

    Pure proxy, no storage

    We fetch live and return it. Your requested profiles and media are never persisted — only a short cache keeps repeat lookups fast.

grabd --mcp

Instagram data inside your AI agent. coming soon

An MCP server for Claude, Cursor, and other agents — no glue code, no SDK. Not built yet: ask for it when you request access and we’ll queue you up.

Planned tools

  • get_profile Fetch a public Instagram profile and its 12 latest posts.
  • get_posts Fetch the latest posts and reels for a username.

Works with

  • Claude
  • Claude Code
  • Cursor
  • Windsurf
  • any MCP client
mcp config — planned shape
{
  "mcpServers": {
    "grabd": {
      "url": "https://mcp.grabd.co",
      "headers": { "apikey": "$GRABD_KEY" }
    }
  }
}

Preview of the intended configuration. The endpoint above is not live yet.

Join the MCP waitlist →
grabd --pricing

Simpler pricing than Apify. Pay for volume, nothing else.

No compute units, no actor rental, no platform fee to reverse-engineer. Tell us the volume you expect and we’ll send a key and a number. Early access pricing is deliberately low.

grabd --request-access

Get a key.

Tell us where to reach you and roughly how many requests you expect per month. We’ll send an API key and early-access pricing. No credit card, no sales call.

  • Drop-in replacement for the Apify actor
  • Usage-based, early-access pricing
  • Reply from a human, usually same day
POST /api/lead

grabd --faq

Questions developers ask.

How is grabd different from Apify?

grabd is a single synchronous endpoint that returns Instagram profile data in the exact shape of Apify’s instagram-profile-scraper actor. No actors, runs, datasets, or polling — and a fraction of the price. If your code already parses that actor’s output, you change one URL.

Is grabd a drop-in replacement for Apify’s instagram-profile-scraper?

Yes, for profile lookups. grabd returns the same field names as the instagram-profile-scraper actor, so the migration is changing one URL and reading the response body directly instead of items[0]. You keep your existing parsing code.

Why is grabd faster than an Apify actor?

An actor run has to cold-start a container, execute, write to a dataset, and then be polled before you can read anything. grabd is a single synchronous HTTP request — the data comes back in the same call. There is no cold start to wait through, and a short (~5 minute) cache makes repeat lookups near-instant.

Does grabd have an MCP server?

Not yet — an MCP server is in development so agents like Claude and Cursor can pull public Instagram profile data directly, without glue code. Mention MCP when you request access and we’ll notify you when it ships.

What data does grabd return?

Public profile information — the same data a signed-out visitor sees on instagram.com: username, full name, bio, follower and post counts, verification and business fields, plus the 12 most recent public posts and reels with captions, likes, views, and timestamps.

Which platforms does grabd support?

Instagram public profile data today: a profile plus its 12 latest posts and reels. More platforms are on the roadmap.

Does grabd store my data?

No. grabd is a pure proxy — it fetches live and returns it, and never persists the profiles or media you request. A short (~5 minute) cache keeps repeat lookups fast.

What are the rate limits?

Requests are limited per API key — 600 per minute by default, with standard rate-limit headers. Exceeding it returns HTTP 429; retry after a short pause. Higher limits are available for Scale volume.

What about media URLs?

Profile pictures, images, and videos are returned as signed, time-limited Instagram CDN URLs. If you need to keep the media, download or re-host it promptly rather than storing the URL.