Skip to content

Meta Ads Limitations

The Meta Ads connector has a number of limitations tied both to Meta API policies and to the architectural specifics of the integration. All significant limitations and workaround strategies are listed below.

1. Rate Limiting (3 Requests/sec)

Limitation: the provider-level rate limiter caps request frequency at 3 requests per second, with a 1000ms window and 100ms jitter.

Implementation: requests are queued and executed sequentially while respecting the interval. Exceeding the limit returns HTTP 429 or an error code from the list of throttle errors.

Workaround strategy:

  • Use filters to reduce the number of requests
  • Apply data caching
  • For large volumes, use async reports

2. META_MAX_PAGES (Page Limit)

Limitation: the maximum number of pagination pages is configured via runtimeConfig.providers.meta.maxPages.

What happens when exceeded: a meta_paging_truncated event is logged, and results are truncated to the maximum number of pages.

Recommendation: when working with large accounts (hundreds of campaigns and thousands of ads), use filters to narrow the sample or request data in parts.

3. Exponential Backoff on Throttling

Limitation: when throttle errors are received, exponential backoff is applied:

  • Base delay: 60 seconds
  • Maximum delay: 15 minutes
  • Priority: the estimated_time_to_regain_access header takes priority over the formula min(MAX_THROTTLE_BACKOFF_MS, DEFAULT_THROTTLE_BACKOFF_MS * 2^attempt)
  • Maximum multiplier: 4x the base delay

Per-account quota tracking: callCount, totalCputime, totalTime are used — worstPct by maximum to estimate the wait needed. estimated_time_to_regain_access in seconds × 60 × 1000 → regainMs.

4. 8 Throttling Codes

The Meta API returns specific error codes when limits are exceeded:

CodeMessageCategory
4Application request limit reachedthrottle
17User request limit reachedthrottle
32Page-level throttlingthrottle
613Custom-level throttlingthrottle
80000Business use case throttling (Instagram)throttle
80003Business use case throttling (custom audiences)throttle
80004Business use case throttling (ads management)throttle
80014Business use case throttling (ads insights)throttle

All throttle errors are retryable — the system automatically retries the request via backoff.

5. Payload Too Large

Limitation: a request can be rejected with a payload too large error in two variants:

CodeDescription
payload-1-99Payload too large (code: 1, subcode: 99)
payload-100-1487534Payload too large (code: 100, subcode: 1487534)

Cause: too many fields or metrics in a single request.

Solution: split the request into several smaller ones — request metrics in groups of 10-15 at a time.

6. Creative Degradation

Limitation: creative enrichment can degrade on API errors.

Consequences: creative fields (thumbnail_url, image_url, body, link, download_url, video_id, title) may be missing from the response, while the core structural and metric data is preserved.

Cause: creatives are requested via a separate API call, which can fail independently of the main request.

7. Budget Fields in Cents

Limitation: the daily_budget and lifetime_budget fields come from the API in cents.

Conversion: LightLead automatically divides the value by 100 to get the amount in the actual currency.

python
campaign_budget = int(daily_budget) / 100

8. Default Statistics Period

Limitation: the default statistics period is last_30d.

Available periods: today, yesterday, last_7d, last_30d.

Implementation: via the resolveGraphDateRange function.

9. Transport Errors

Network issues can cause transport errors:

CodeDescription
transport-5xxHTTP 5xx server error
transport-ECONNABORTEDConnection aborted
transport-ECONNRESETConnection reset
transport-ETIMEDOUTConnection timed out
transport-EAI_AGAINDNS lookup failed

All transport errors are retryable — the system automatically retries the request.

Limitations Summary Table

LimitationValueRetryable
Rate limit3 requests/secYes
META_MAX_PAGESConfigurableNo (truncation)
Maximum backoff15 minutesYes
Backoff multiplierUp to 4xYes
Throttle codes8 + HTTP 429Yes
Payload too large2 variantsYes (split the request)
Creative degradationPartial data lossNo
Budget in cents/100 conversionN/A
Transport errors5 typesYes

Maintained by the LightLead Documentation Team · Last verified: 2026-07-25