Instagram 429 Too Many Requests: what the error means

HTTP 429 on Instagram means the request was throttled. Meta's Graph API uses specific throttle codes instead of documenting 429. Here is how to tell them apart and back off correctly.

HTTP 429 Too Many Requests

Short answer

An Instagram response reporting too many requests means the caller is being throttled. For official API integrations, inspect Meta's documented error codes and API usage headers, then wait for the rolling window instead of retrying immediately.

Diagnosis checked 2026-11-12; sources below.

Why it happens

HTTP 429 means the caller is being throttled. Meta's platform documents its throttling by error code (4, 17, 32, 613 and 80002) rather than by HTTP 429, and recovery means reading the usage headers and waiting out the rolling window instead of retrying. Source: Meta rate limits.

Do this now

  1. If the data is yours or your use fits the official terms, switch to the official route: Instagram Platform API (Limited access). No published per-call price for standard use; access depends on Meta app configuration.
  2. For profiles and posts at volume, run a hosted route instead of patching your own requests: Instagram Profile Scraper - Bio & Posts. The request below runs it with its published example input through the Apify API (your token, billed at the Store price).
  3. Compare every route, with fields and prices, on the Instagram page.

Python

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
    "usernames": [
        "instagram"
    ],
    "maxPosts": 3,
    "skipPinnedPosts": False
}

run = client.actor("dataspryva/instagram-profile-scraper-bio-and-posts").call(run_input=run_input)
if run is None:
    raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

pip install apify-client

JavaScript

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
    "usernames": [
        "instagram"
    ],
    "maxPosts": 3,
    "skipPinnedPosts": false
};

const run = await client.actor("dataspryva/instagram-profile-scraper-bio-and-posts").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

npm install apify-client

cURL

curl -X POST "https://api.apify.com/v2/actors/dataspryva~instagram-profile-scraper-bio-and-posts/run-sync-get-dataset-items"   -H "Authorization: Bearer $APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"usernames":["instagram"],"maxPosts":3,"skipPinnedPosts":false}'

Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).

MCP (AI agents)

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=dataspryva/instagram-profile-scraper-bio-and-posts",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.

Open Instagram Profile Scraper - Bio & Posts in Apify Store

Routes that work for Instagram data

The official route first, then the catalogue Actors that fit this problem (profiles and posts), by their published fields. Store figures are the publisher's public numbers.

Routes for Instagram data
RouteCore fieldsPrice / 1KSuccess, 30 daysLink
Limited accessInstagram Platform APInot comparedbelowOfficial docs
Instagram Profile Scraper - Bio & Posts4/7$0.7010 runs, too few to rateOpen in Apify Store
Instagram Posts & Reels Data Scraper4/7$0.9919 runs, too few to rateOpen in Apify Store
Instagram Transcript Scraper - Reels & Video2/7$0.5019 runs, too few to rateOpen in Apify Store

Official price: No published per-call price for standard use; access depends on Meta app configuration. Compare all 12 Instagram routes.

The facts behind the error

FactValue
HTTP 429 meaningToo many requests; the caller is being throttled
Meta throttle codesError codes 4, 17, 32, 613 and 80002 cover Graph and Instagram Platform throttling
Official API documentationMeta documents throttling by error code, not by HTTP 429
RecoveryUse the API usage headers, wait for the rolling window, and avoid retry storms

Identify which interface returned the error

Meta documents Graph and Instagram Platform throttling through specific error codes rather than through the HTTP status alone. A status-only handler can miss the information needed to classify an official API response.

Keep browser-facing requests separate from official API requests when diagnosing failures. Do not assume that every Instagram response follows the same documented error scheme.

Reduce pressure while the window recovers

Use the API usage headers to inform request scheduling and allow the rolling window to recover. Avoid retry storms, where repeated failures trigger still more requests.

Coordinate retries across the workflow so that separate workers do not all resume at once. If the same workload repeatedly reaches the limit, reduce request demand or change its schedule.

When to stop fighting the error

Stop treating each throttle response as an isolated retry problem when the required workload repeatedly exceeds the available access. Reduce collection frequency or scope, or assess an official API workflow whose permissions and limits fit the requirement; request-level patches cannot make a sustained capacity mismatch disappear.

Questions people ask

Does throttling mean the response format changed?

Throttling means the caller is being limited because of request activity. Check the returned error details before treating the failure as a parsing problem.

Does Meta document throttling through the HTTP status alone?

Meta documents official API throttling through specific error codes. Inspect those codes alongside API usage headers when classifying a response.

How long should the integration wait?

Use the API usage headers and allow the relevant rolling window to recover. The published data does not provide a universal waiting period, so do not hard-code one as a platform guarantee.

Should failed requests retry immediately?

Immediate repeated retries can create a retry storm and add pressure while the caller is already throttled. Delay and coordinate retries while reducing the request workload.

Sources

Every dated claim on this page comes from the public sources below. Check the source before you make a business decision on it.

Content updated 2026-11-12Data checked 2026-11-12

Get Instagram data with a catalogue Actor

Instagram Profile Scraper - Bio & Posts returns 4 of 7 core Instagram fields at $0.70 per 1,000 results. Compare all 12 Instagram routes.

Open in Apify Store