# Instagram scraper API — $0.004 per profile

> Instagram scraper API: Public Instagram profile stats — followers, following, posts. $0.004 per delivered profile, nothing delivered means nothing charged.

[Home](https://quanticdata.io/)/[Collectors](https://quanticdata.io/collectors/)/*Instagram scraper API*

# Instagram scraper API

An Instagram scraper API for public profiles: display name, bio, verified and private flags, account category, link in bio, follower, following and post counts, and the profile picture — from a list of usernames or profile URLs.

[Get my free API key](https://app.quanticdata.io/register) [See the request](/collectors/instagram-scraper-api/#integration)

$0.004 per delivered profile · $2 free every month · Failed runs never billed

POST /v1/scraper/collectors/instagram_profile/run

```
$ curl $QD/instagram_profile/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"usernames": ["nasa", "natgeo"], "max_results": 10}'
{ "status": "done", "count": 10,
  "results": [
    {
      "platform": "…",
      "username": "…",
      "user_id": "…",
      "full_name": "…" } ],
  "cost": 0.04 }
# 10 profiles × $0.004 · nothing delivered, nothing charged
```

**$0.004 / profile**500 profiles on the free $2 every month

**Semantic input**usernames, country, max_results — no URL lists

**Up to 50**profiles per run, pagination handled for you

**No browser**read over HTTP/TLS — cheaper and faster than rendering

On this page: [What it is](/collectors/instagram-scraper-api/#what) [Output fields](/collectors/instagram-scraper-api/#output) [Inputs](/collectors/instagram-scraper-api/#input) [Pricing](/collectors/instagram-scraper-api/#pricing) [Integration](/collectors/instagram-scraper-api/#integration) [Use cases](/collectors/instagram-scraper-api/#use-cases) [Versus the alternatives](/collectors/instagram-scraper-api/#compare) [FAQ](/collectors/instagram-scraper-api/#faq)

## What an Instagram scraper API does

Influencer vetting and competitor tracking both start at the profile level: who they are, how big they are, what they link to. This collector reads the logged-out profile page, which publishes exactly that, and returns one row per handle.

One honesty note that matters for your analysis: Instagram publishes follower, following and post counts only in the page's meta description, already rounded ("104M Followers"). The collector expands those to numbers but they are Instagram's rounded figures, not exact counts. TikTok, by contrast, publishes exact ones.

Input is meaning, not a URL *usernames* *country* *max_results*

## What one profile looks like

Every delivered profile carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

| Field | Type | What it holds |
| --- | --- | --- |
| `platform` | string | instagram or tiktok. |
| `username` | string | Handle. |
| `user_id` | string · nullable | Platform-side account id. |
| `full_name` | string · nullable | Display name. |
| `biography` | string · nullable | Bio text. |
| `verified` | boolean | Verified badge. |
| `is_private` | boolean | Private account. |
| `is_business` | boolean | Business/creator account. |
| `category` | string · nullable | Account category when set. |
| `external_url` | string · nullable | Link in bio. |
| `followers` | integer · nullable | Follower count. |
| `following` | integer · nullable | Following count. |
| `posts` | integer · nullable | Posts (Instagram) or videos (TikTok). |
| `likes` | integer · nullable | Total likes — TikTok only, null on Instagram. |
| `profile_pic` | string · nullable | Profile picture URL. |
| `url` | string | Profile URL. |

## Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

| Input | Type | Required | What it does |
| --- | --- | --- | --- |
| `usernames` | array | yes | Handles or profile URLs (one per line). |
| `country` | string | no | ISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool. |
| `max_results` | integer | no | How many profiles to deliver at most (1–50). You pay only for delivered profiles. |

Pricing

## Instagram scraper API pricing

$0.004 per delivered profile. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 500 profiles before you spend anything.

**$0.004**per delivered profile*$4 per 1,000 delivered profiles*

**500 profiles**on the free allowance*$2 every month, no card*

**Zero rows**zero charge*blocks, captchas and retries are on us*

**−30%**on volume tiers*the catalog returns your key's price*

### Pay as you go

$0/mo

- $2 free credit / month

- 60 requests / min

- List unit prices

### Starter

$19/mo

- $15 free credit / month

- 300 requests / min

- 10% off unit prices

Most popular

### Growth

$79/mo

- $50 free credit / month

- 600 requests / min

- 20% off unit prices

### Scale

$299/mo

- $250 free credit / month

- 1,200 requests / min

- 30% off unit prices

Same wallet, same key and same $2 monthly allowance as every other [Data API](https://quanticdata.io/web-data-api-for-ai/). Prices are launch pricing read live from the billing config — `GET /v1/scraper/collectors` returns the price your key actually pays.

Integration

## One POST, typed rows

Base URL `https://api.quanticdata.io/v1`, Bearer auth, the same key as every other Data API. Endpoint: `POST /v1/scraper/collectors/instagram_profile/run`.

```
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/instagram_profile/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"usernames":["nasa","natgeo"],"max_results":10}'
```

```
import requests

r = requests.post(
    "https://api.quanticdata.io/v1/scraper/collectors/instagram_profile/run",
    headers={"Authorization": f"Bearer {QD_API_KEY}"},
    json={
        "usernames": [
            "nasa",
            "natgeo"
        ],
        "max_results": 10
    },
    timeout=120,
)
for row in r.json()["payload"]["results"]:
    print(row)
```

```
const res = await fetch(
  "https://api.quanticdata.io/v1/scraper/collectors/instagram_profile/run",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.QD_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({"usernames":["nasa","natgeo"],"max_results":10}),
  },
);
const { payload } = await res.json();
console.table(payload.results);
```

```
claude mcp add quantumproxies \
  -e QUANTUMPROXIES_API_KEY=qd_live_your_key_here \
  -- npx -y quantumproxies-mcp

# then, in the chat:
> run the instagram_profile collector with usernames=["nasa","natgeo"] and max_results=10
```

## What people build with the Instagram scraper API

Three shapes of work this endpoint was designed around.

### Influencer vetting

Check size, category and bio link across a shortlist before outreach.

### Competitor tracking

Re-run a list weekly and watch follower growth.

### Lead qualification

Separate business accounts from personal ones at scale.

## Instagram scraper API versus rolling your own

The differences that actually cost time when you build this in-house.

|  | DIY scraper | This collector |
| --- | --- | --- |
| Login | Session cookies you must supply and rotate | None — public pages only |
| Counts | Presented as exact | Documented as Instagram's rounded figures |

## What the Graph API will and will not tell you

Meta's Graph API is built for accounts you control: a Facebook app, an Instagram Business or Creator account connected to a Page, an access token, and App Review for most useful permissions. Read data about accounts you do not own is narrow by design, and the Business Discovery endpoint that offers a slice of it still requires your own business account as the caller.

This collector covers the public profile layer for accounts nobody has authorised you to read — identity, counts, category, bio and link. It is explicitly not post-level: individual posts, likes and comments live behind authenticated endpoints, and a collector that pretended otherwise would be a collector that breaks on the next token rotation.

## Limits, scope and the legal bit

Up to 50 profiles per run, public pages only, no session and no cookies. Private accounts return with `is_private` true and whatever counts remain public — a fact about the account rather than an error. Throughput is your plan's rate limit rather than anything about the collector: 60 requests/minute on pay-as-you-go, up to 1,200 on the top tier.

Collecting publicly visible data is generally lawful in most jurisdictions, and courts have repeatedly declined to treat reading a public page as unauthorised access. But a profile describes a person, so it is personal data under GDPR, CCPA and equivalents no matter how public the page was: you need a lawful basis to process it and individuals keep rights over it. Screening business and creator accounts for a commercial partnership is a materially different posture from compiling records on private individuals. Instagram's terms separately restrict automated collection. None of this is legal advice — get some for your actual use case.

## FAQ

Questions we get about the Instagram scraper API.

[Something else? Ask us →](mailto:hello@quanticdata.io)

### Are the follower counts exact?

No, and the field documentation says so. Instagram only publishes rounded counts on the public profile ("104M Followers"), so that is what you get. Where you need exact numbers, TikTok publishes them and our [TikTok collector](https://quanticdata.io/collectors/tiktok-scraper-api/) returns them.

### Can I get posts, reels or comments?

Not from this collector. Post-level data sits behind Instagram's authenticated endpoints; this API never logs in as anyone, so it stops at what the public profile shows.

### Do private accounts work?

You get the public shell — name, picture and the private flag — and nothing more, because nothing more is published.

### Is there a free Instagram scraper API?

Every account gets $2 of credit every month with no card, which is about 500 delivered profiles on this endpoint at $0.004 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

### How much does one run cost?

Multiply the rows you actually receive by $0.004. A run capped at 50 profiles — the maximum for this collector — costs $0.2 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and `GET /v1/scraper/collectors` returns the price your key actually pays.

### Can it collect posts or comments?

No, and the boundary is deliberate. Post-level data sits behind Instagram's authenticated endpoints; collecting it means holding a session, and sessions get detected and terminated. The profile layer is what can be read reliably and repeatedly.

### Is this safe to run in a scheduled pipeline?

It reads public pages with no login and no cookies, so there is no account that can be restricted. That is what makes it schedulable — the common failure mode of Instagram scrapers is losing the account they depend on.

## Run the Instagram scraper API now

$2 of free credit every month, no card. Your key returns its own prices from `GET /v1/scraper/collectors`.

[Get my free API key](https://app.quanticdata.io/register)

Related: [All 32 collectors](https://quanticdata.io/collectors/) [TikTok scraper API](https://quanticdata.io/collectors/tiktok-scraper-api/) [LinkedIn profile scraper API](https://quanticdata.io/collectors/linkedin-profile-scraper-api/) [YouTube channel scraper API](https://quanticdata.io/collectors/youtube-channel-scraper-api/) [Documentation](https://quanticdata.io/docs/)

---

Source: https://quanticdata.io/collectors/instagram-scraper-api/ · Site index for AI: https://quanticdata.io/llms.txt
