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
- 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.
- 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).
- 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.
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.
| Route | Core fields | Price / 1K | Success, 30 days | Link |
|---|---|---|---|---|
| Limited accessInstagram Platform API | not compared | below | Official docs | |
| Instagram Profile Scraper - Bio & Posts | 4/7 | $0.70 | 10 runs, too few to rate | Open in Apify Store |
| Instagram Posts & Reels Data Scraper | 4/7 | $0.99 | 19 runs, too few to rate | Open in Apify Store |
| Instagram Transcript Scraper - Reels & Video | 2/7 | $0.50 | 19 runs, too few to rate | Open 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
| Fact | Value |
|---|---|
| HTTP 429 meaning | Too many requests; the caller is being throttled |
| Meta throttle codes | Error codes 4, 17, 32, 613 and 80002 cover Graph and Instagram Platform throttling |
| Official API documentation | Meta documents throttling by error code, not by HTTP 429 |
| Recovery | Use 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.
Website pages
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.
- Meta rate limits — checked 2026-11-09
- Meta error handling — checked 2026-11-09
- Instagram Platform — checked 2026-11-09
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.