Ever been stopped cold by the message: “You’ve hit your API rate limit”? Whether you're running real-time dashboards, backtests, or execution systems, hitting an API rate limit disrupts everything. This guide explains exactly how API rate limits work, how CoinAPI defines and enforces quotas, and how to monitor your usage to avoid 429 errors. Learn how to optimize your requests across REST and WebSocket endpoints while scaling confidently with real-time tracking tools and overage options.
API rate limits and quotas: CoinAPI guide
API Rate limits define how many requests you're allowed to make.
Throttling occurs when you exceed that limit. Either requests are slowed down or blocked (often with a 429 error).
These limits exist to enforce policy, protect platform stability, and ensure fairness across all users, from solo developers to institutional quant teams. They’re how we keep the system fast, reliable, and scalable.
In addition to daily quota limits, CoinAPI enforces several other restrictions to ensure fair usage and maintain optimal performance for all users. These include:
1. Burst Limits (Concurrency Limits)
Concurrency limits control how many simultaneous API calls can be processed at once. This prevents a single user from overwhelming the system, especially during peak usage.
2. Base rate limits per Key/User
Every API key has a base rate limit, typically measured in requests per second or minute. That depends on the user’s subscription plan. These may also include credit-based limits for specific products like the Market Data REST API.
3. Special endpoint restrictions
Certain protocols or endpoints (e.g., FIX, WebSocket) have unique limits. For example:
- WebSocket API includes request limits per IP, hello limits, and concurrency caps.
- FIX API allows only one session per API key. Opening a new session disconnects the current one.
4. Overage Options
You can continue using CoinAPI beyond your limit by paying overage fees. This ensures uninterrupted access even during high-volume periods.
5. Custom Limit Increases
Some limits (like concurrency) can be increased by request. These are reviewed case-by-case basis depending on usage history and infrastructure capacity.
These layered controls help us deliver reliable performance while maintaining flexibility for advanced users.
Rate limits are built-in restrictions on how many API requests you can make in a specific time frame. These limits exist to maintain platform stability and ensure fair usage.
CoinAPI does not enforce static tier-based rate limits the way some providers do. Instead, we operate on an autoscaling model. Our infrastructure dynamically adjusts to accommodate higher usage in real time, helping avoid unnecessary throttling during legitimate spikes in volume. This is especially valuable for enterprise and high-frequency users who can’t afford hard stops.
Behind the scenes, a dedicated rate-limiting module continuously checks your request volume, matches it to your active plan, and determines whether to throttle, allow, or reject traffic. This logic ensures fairness and reliability while allowing flexibility during bursts.
CoinAPI Market Data API rate limits
CoinAPI enforces rate limits for its Market Data API based on your selected plan. Each tier defines how many requests (credits) your API key can make per day and what features you can access. These plans are designed to scale with your usage, from testing to enterprise-grade infrastructure.
⚠️ Note: CoinAPI no longer offers a "Free" tier for Market Data API. This has been replaced by the Metered (Pay-As-You-Go) model, where access depends on the availability of credits in your customer portal.

📘 For a more detailed breakdown, please visit our pricing page
Each Market Data API key is associated with a specific plan and throttled accordingly.
💡 Note: Other CoinAPI products (e.g., Exchange Rates API, Indexes API) may have different rate limits. Check product-specific docs for details.
How to monitor your API usage and quotas
While CoinAPI previously returned X-RateLimit
headers in many HTTP responses, these headers are not consistently available across all endpoints or products. For reliable monitoring of your quota, the recommended approach is to use the Customer Portal.
Customer Portal → Usage Metrics
- View your current and historical usage
- Monitor remaining daily credits
- Track overage status and billing
This method gives you real-time visibility into quota usage across all API keys without consuming additional credits.
🔗 Learn more: Why rate limit headers may not always be shown

Types of Limits

Credits and API Rate Limits in REST API Requests
The more data you request in a single API call, the more credits it consumes, based on the limit
parameter.
Not all REST API requests consume the same number of credits. The cost is based on data volume, most commonly influenced by the limit
parameter.
Here are two examples to illustrate how this works:

CoinAPI calculates usage by summing the total credit consumption across your calls. The more data you request in a single call, the more credits it consumes.
How CoinAPI measures API usage
At CoinAPI, a "request" is defined by the amount of data you're asking for, not necessarily how many times you call the API.
- If your API call doesn't include a
limit
parameter or the endpoint doesn't support it, then the call is counted as one request by default. - If your call uses the
limit
parameter, then the system counts one request for every 100 data points you ask for.
Examples:
- A call with
limit=200
counts as 2 requests - A call with
limit=500
counts as 5 requests
This model ensures a fair billing system, especially for requests that return large volumes of data in a single response.
🧠 Note: This logic applies primarily to REST API calls. WebSocket usage is measured differently, based on subscription volume and message frequency.
This approach ensures fair usage measurement, especially for large data pulls or batch requests.
📘 View API Limits & Billing Metrics →
Credit Consumption Examples: Real API Calls and Costs
Understanding credit consumption can be confusing. Here are real examples showing exactly how CoinAPI calculates credits for common API calls:
OHLCV Historical Data Examples
Example 1: Single Day of 1-Minute Data
bashGET /v1/ohlcv/BINANCE_SPOT_BTC_USDT/history?period_id=1MIN&time_start=2024-01-01T00:00:00&time_end=2024-01-02T00:00:00 # Returns: 1440 data points (24 hours × 60 minutes) # Credits used: 14.4 → rounded up to 15 credits
Example 2: One Week of Hourly Data
bashGET /v1/ohlcv/COINBASE_SPOT_ETH_USD/history?period_id=1HRS&time_start=2024-01-01&time_end=2024-01-08 # Returns: 168 data points (7 days × 24 hours) # Credits used: 1.68 → rounded up to 2 credits
Example 3: Large Historical Query
bashGET /v1/ohlcv/BINANCE_SPOT_BTC_USDT/history?period_id=1MIN&time_start=2024-01-01&time_end=2024-01-31 # Returns: ~44,640 data points (31 days × 1440 minutes) # Credits used: 446.4 → rounded up to 447 credits
Date Parameter Special Rule: 10 Credit Maximum
Important: When using date-bounded queries (with time_start
and time_end
), CoinAPI caps credit consumption at 10 credits maximum per request, regardless of data volume returned.
Example:
bashGET /v1/ohlcv/BINANCE_SPOT_BTC_USDT/history?period_id=1MIN&time_start=2024-01-01&time_end=2024-12-31 # Returns: ~525,600 data points (full year of minutes) # Normal calculation: 5,256 credits # Actual charge: 10 credits (capped)
Current Data vs Historical Data
Current/Latest Data (No Date Parameters):
bashGET /v1/ohlcv/BINANCE_SPOT_BTC_USDT/latest?period_id=1DAY&limit=100 # Returns: 100 data points # Credits used: 1 credit (100 data points = 1 credit)
Latest Data with Higher Limit:
bashGET /v1/ohlcv/BINANCE_SPOT_BTC_USDT/latest?period_id=1DAY&limit=3000 # Returns: 3000 data points # Credits used: 30 credits (3000 ÷ 100 = 30)
Trade Data Examples
Recent Trades:
bashGET /v1/trades/BINANCE_SPOT_BTC_USDT/latest?limit=1000 # Returns: 1000 trade records # Credits used: 10 credits
Historical Trades (Date-Bounded):
bashGET /v1/trades/BINANCE_SPOT_BTC_USDT/history?time_start=2024-01-01&time_end=2024-01-02 # Returns: Potentially 50,000+ trades # Credits used: 10 credits (date-bounded cap)
Common Misconceptions Clarified
❌ Wrong Assumption: "Each API call = 1 credit" ✅ Reality: Credits depend on data volume returned
❌ Wrong Assumption: "If I make 5 API calls, I use 5 credits" ✅ Reality: 5 calls returning 100 data points each = 5 credits total
❌ Wrong Assumption: "Historical queries are always expensive" ✅ Reality: Date-bounded queries are capped at 10 credits maximum
❌ Wrong Assumption: "limit=1000 always costs 10 credits" ✅ Reality: Only if the endpoint actually returns 1000 data points
Order Book Snapshot Examples
Single Symbol Order Book:
bashGET /v1/orderbooks/BINANCE_SPOT_BTC_USDT/current # Returns: 1 snapshot (top 20 levels) # Credits used: 1 credit
Note: Order book endpoints don't support multi-symbol queries, so each symbol requires a separate request.
Credit Optimization Strategies
Strategy 1: Use Date Boundaries for Large Historical Queries
bash# Instead of: GET /v1/ohlcv/BINANCE_SPOT_BTC_USDT/latest?limit=10000 # 100 credits # Use: GET /v1/ohlcv/BINANCE_SPOT_BTC_USDT/history?time_start=2024-01-01&time_end=2024-01-31 # 10 credits
Strategy 2: Batch Multiple Days in Single Request
bash# Efficient: One request for full month GET /v1/trades/BINBASE_SPOT_BTC_USDT/history?time_start=2024-01-01&time_end=2024-02-01 # 10 credits # Inefficient: 31 separate daily requests # 31 × 10 credits = 310 credits for the same data
Monitoring Your Credit Usage
Check Response Headers:
httpHTTP/1.1 200 OK X-Credits-Used: 15 X-Credits-Remaining: 985
Best Practice: Always monitor the X-Credits-Used
header to understand actual consumption patterns for your specific use cases.
Optimizing REST API usage with Credit-Based limits
CoinAPI’s REST API uses a credit-based billing model, where requests are billed based on the volume of data retrieved, not just the number of calls.
- A single-symbol trade request (default
limit=100Consumes
1 credit. - A request with a higher
limit
, likelimit=1000
would consume 10 credits.
🔎 Note: The order book endpoint does not support multi-symbol queries. Separate requests must be made for each symbol.
To optimize your usage:
- Use the
limit
parameter wisely to batch requests when appropriate - Monitor the
x-credits-used
Response header to understand the cost per call

Common Triggers for Limit Errors

Example addition under “Special Endpoint Restrictions”:
For example, the Market Data WebSocket API includes
- Max 10 connections per IP
- Max 1000 messages/second per connection
- Max 1000
hello
messages/day per IP
The FIX API supports 1 session per API key — opening a new session will disconnect the current one.
How to monitor API rate limits without exceeding them?
The best method is to use the Customer Portal Metrics tab. It provides real-time insights into your API usage and remaining quota without consuming any credits or impacting rate limits.
This is especially useful for:
- Monitoring across multiple keys
- Usage alerts for automated systems
- Budgeting API use in high-volume production environments
If you do use the response headers:
- Note that not all endpoints consistently include them
- You’ll still be consuming quota by making the call
For full transparency and control, the Customer Portal remains the most efficient and quota-free option.
Example of usage limits at Customer Portal:

What happens if I exceed my API rate limits with CoinAPI?
Step 1: Check What Limit You Hit
Use the CoinAPI dashboard or check API response headers. Common codes:
429 Too Many Requests
(rate limit)403 Forbidden
(quota exceeded or unsupported feature)
Step 2: Adjust and Retry
Back off temporarily. Refactor with smarter retry/cache logic.
Step 3: Talk to CoinAPI
Need higher throughput? We're here to help with:
- Troubleshooting quota usage
- Temporary quota increases
- Tailored plans for enterprise use cases
Tier 1: 10,000 req/day → 50 USD/month
• Tier 2: 50,000 req/day → 150 USD/month
(Example only — contact sales for live pricing)
📨 How to upgrade/downgrade my subscription? →
How do I request a CoinAPI quota increase?
If you're running high-volume queries, handling many tokens across multiple exchanges, or backfilling months of historical data, it’s normal to wonder:
- What happens if I exceed my plan?
- Will I be throttled, or just billed more?
- Can I predict my usage and control costs?
Here’s how CoinAPI handles that:
✅ Transparent overage policy – You can keep building beyond your plan's quota by paying a predictable per-unit fee. No hard blocks.
✅ Real-time monitoring – Use the X-RateLimit
headers and dashboard insights to track usage across keys and projects.
✅ Custom plans – We work with scaling teams to adjust concurrency limits, historical data access, and volume thresholds.
How do I request a CoinAPI quota increase?
Contact our sales team at CoinAPI Sales for custom plans tailored to your needs.
TL;DR
Understanding your API rate limits is key to avoiding disruptions. You don’t need to stop building when you hit your quota, you just need better visibility, smarter tooling, or the right plan.
- Track your API rate limits dynamically with CoinAPI’s customer portal
- REST API uses credits; the cost varies by request size
- Use overage options to avoid hard stops
- Contact CoinAPI for custom scaling
If you're:
- Backfilling historical data for research
- Running real-time models on multiple tokens
- Scaling a cross-exchange trading system
CoinAPI scales with you.