| name | apify-rate-limits |
| description | Handle Apify API rate limits with proper backoff and request queuing.
Use when hitting 429 errors, optimizing API request throughput,
or implementing rate-aware client wrappers.
Trigger: "apify rate limit", "apify throttling", "apify 429",
"apify retry", "apify backoff", "too many requests apify".
|
| allowed-tools | Read, Write, Edit |
| version | 1.0.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","scraping","automation","apify"] |
| compatible-with | claude-code |
Apify Rate Limits
Overview
The Apify API enforces rate limits per resource. The apify-client library auto-retries 429s (up to 8 times with exponential backoff), but you need to understand the limits for bulk operations and custom API calls.
Apify Rate Limit Rules
| Scope | Limit | Notes |
|---|
| Per resource (default) | 60 req/sec | Applies to each Actor, dataset, KV store independently |
| Dataset push | 60 req/sec per dataset | Batch items to reduce call count |
| Actor runs | 60 req/sec per Actor | Start runs in sequence or with delays |
| Platform-wide | Higher limit | Aggregate across all resources |
"Per resource" means: calls to dataset A and dataset B each get 60 req/sec independently.
Rate limit headers returned:
X-RateLimit-Limit — max requests per interval
X-RateLimit-Remaining — remaining requests
X-RateLimit-Reset — epoch seconds when limit resets
Instructions
Step 1: Understand Built-in Retries
The apify-client package handles rate limits automatically:
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
maxRetries: 5,
: ,
});