API rate limits
SocialScalr's public REST API and outbound webhook layer have per-plan rate limits. The defaults are generous for normal integration patterns; custom limits available on request for high-volume Agency workspaces.
Per-plan limits
| Plan | API req/min | Webhook deliveries/min | Max payload |
|---|---|---|---|
| Free | - | - | - |
| Starter ($29/mo) | 100 | 25 | 1 MB |
| Pro ($49/mo) | 600 | 100 | 2 MB |
| Agency ($149/mo, 10 seats) | 1,200 | 200 | 5 MB |
Limits are scoped per workspace (not per API token). Multiple tokens within the same workspace share the same bucket.
Rate limit headers
Every API response includes:
X-RateLimit-Limit- your plan's per-minute ceiling.X-RateLimit-Remaining- requests remaining in the current 60-second window.X-RateLimit-Reset- Unix timestamp when the window resets.
Use these in client code to back off proactively before hitting 429.
When you hit the limit
The API returns:
HTTP/1.1 429 Too Many Requests
Retry-After: 18
Content-Type: application/json
{ "error": "rate_limit_exceeded",
"message": "Rate limit exceeded. Try again in 18 seconds.",
"retry_after_seconds": 18 }
Recommended client behavior:
- Respect the
Retry-Afterheader - don't immediate-retry. - Use exponential backoff with jitter for sustained burst periods.
- Implement a token bucket on your side to stay under the limit proactively.
- For batch jobs, paginate with reasonable page sizes (100 leads/page typical) rather than max-out per request.
Webhook delivery limits
Outbound webhook deliveries (events SocialScalr fires to your endpoint) are also rate-limited per workspace per minute. Behavior at the cap:
- Deliveries above the cap queue, they're not dropped.
- Queue drains at the cap rate as the 60-second window rolls.
- If queue depth exceeds 10,000 events, SocialScalr emails the workspace Owner with a warning to upgrade or batch on the receiver side.
Per-endpoint limits within the API
A few endpoints have stricter limits because they're expensive server-side:
POST /campaignswith scrape source: 5/minute (each scrape kicks off a job).POST /leadsbulk import (over 100 leads/request): 10/minute.GET /leadswith no filters (workspace-wide): 30/minute (use filters to scope).POST /webhooks/test(manual delivery test): 10/minute per endpoint.
All other endpoints share the global per-minute bucket.
Best practices for high-volume integrations
- Use webhooks instead of polling. If you want to react to new replies, subscribe to
lead.repliedinstead of pollingGET /leads?stage=repliedevery minute. Webhooks are push and don't count against API limits. - Paginate. Default page size is 50, max 250. Don't request 250 if you only need 50.
- Cache. Lead data doesn't change every second. Cache 5-15 minutes on your side for read-heavy patterns.
- Use the
since=filter.GET /leads?since=15mis much cheaper than fetching everything and filtering client-side. - Batch writes.
POST /leadswith an array of 100 leads is one request; sending 100 separate requests is 100. Use the array form.
Requesting a higher limit
Email [email protected] with:
- Workspace ID
- Current usage pattern (requests/min average, peak)
- Why the standard limit doesn't fit
- What integration you're building
Standard custom limits available: 2,400 API req/min, 400 webhook deliveries/min on Agency. Anything beyond requires architecture review.
Related
- REST API + webhooks reference - full endpoint documentation.
- Integration recipes - Zapier, Make, Slack, HubSpot, etc.
- API + webhooks feature deep-dive - the product overview.
Frequently asked questions
What are SocialScalr's API rate limits?
Per workspace, per minute: Starter 100 requests, Pro 600 requests, Agency 1,200 requests. Outbound webhook deliveries: Starter 25/min, Pro 100/min, Agency 200/min. Free tier does not include API access. Rate limit window is rolling 60 seconds; current usage is exposed in response headers X-RateLimit-Remaining and X-RateLimit-Reset.
What happens when I hit the rate limit?
The API returns HTTP 429 Too Many Requests with a Retry-After header indicating seconds until the limit resets. Recommended client behavior: respect the header and back off. Do not retry immediately. Webhook deliveries that hit the per-minute cap queue and drain at the cap rate; SocialScalr does not drop events due to rate limiting.
Can I request higher rate limits?
Yes - email [email protected] with your use case. Standard custom limits are 2,400 req/min and 400 webhook deliveries/min for Agency customers with demonstrated need. Anything beyond requires architecture review to make sure the usage pattern actually requires the higher cap (often the answer is batching, pagination, or caching instead).