Factset · Rate Limits

Factset Rate Limits

FactSet does not publish global per-second rate limit numbers in its public developer documentation. Each API has product-specific guidance — long-running analytics calls (PA Engine, SPAR, Vault, Axioma, Barra, Northfield, Optimization Engine) follow an asynchronous submit-and-poll pattern; batch APIs (Fixed Income Analytics Batcher, Portfolio Reporting Batcher, Quant Engine) accept job submissions governed by the Programmatic Environment commitment; real-time APIs (Real-Time Quotes, Real-Time News, Real-Time Options/Futures) are streaming and limited by the entitled feed bandwidth. Throughput ceilings are tied to the customer's contractual entitlement rather than a public tier.

5 Limits Throttle: 429
FinancialFinancial DataInvestment AnalyticsMarket DataPortfolio AnalyticsResearchRate Limiting

Limits

Synchronous APIs (Formula, Prices, Fundamentals, Estimates, ESG, etc.) contract
varies
per-contract entitlement; not publicly published
Asynchronous engines (PA, SPAR, Vault, Axioma, Barra, Northfield, Optimization) contract
concurrent_jobs
per-contract entitlement; submit-and-poll pattern with task IDs
Batch APIs (Fixed Income Analytics Batcher, Portfolio Reporting Batcher, Quant Engine) contract
jobs_per_day
governed by Programmatic Environment commitment
Real-time streams (Real-Time Quotes, Real-Time News, Real-Time Options/Futures, Direct Streaming of Transaction Messages) feed
messages_per_second
bounded by entitled feed; streaming connection; no per-call ceiling
Exchange DataFeed Snapshot contract
snapshots_per_day
per-entitlement

Policies

Async submit + poll
Long-running analytics requests return a 202 with a task URL — poll the location header for completion; do not retry submit while a task is in progress.
OAuth 2.0 / Service Accounts
Authenticate via OAuth 2.0 client credentials with FactSet-issued service accounts; rotate credentials before expiry.
Backoff on 429/503
Exponential backoff with jitter on transient errors; honor Retry-After when present.
Pagination
Use cursor-based pagination on list endpoints; do not parallel-page beyond 4-8 concurrent page requests per API.
Streaming reconnection
Real-time feeds use WebSocket / streaming HTTP; on disconnect, reconnect with exponential backoff and resume from last sequence number.

Sources