The Appeeky API uses a credit-based rate limiting system. Each plan has a monthly credit allowance. Every API call deducts a set number of credits depending on the endpoint’s computational complexity.
Plans
| Plan | Monthly Credits | Price | Best For |
|---|
| Free | 100 | Free | Testing and proof of concept |
| Starter | 10,000 | $19/mo | Small applications and research |
| Pro | 50,000 | $49/mo | Production services |
| Enterprise | 200,000 | $99/mo | High-volume commercial use |
All new accounts start on the Free plan with 100 credits. Create your account to get started.
Need more credits? Contact us at support@appeeky.com to upgrade your plan or discuss custom pricing for higher volumes.
Credit Costs Per Endpoint
Credits are charged based on the computational cost of each endpoint. Heavier endpoints that aggregate multiple data sources cost more.
Free (0 credits)
| Endpoint | Credits | Description |
|---|
GET /v1/health | 0 | Service health check — always free |
Light (1 credit)
| Endpoint | Credits | Description |
|---|
GET /v1/search | 1 | Search apps by keyword or App ID |
POST /v1/keywords/track | 1 | Add keyword to the scraping pipeline |
GET /v1/keywords/suggestions | 1 | Apple Search autocomplete suggestions |
GET /v1/categories | 1 | List all App Store categories |
Standard (2 credits)
| Endpoint | Credits | Description |
|---|
GET /v1/categories/:id/top | 2 | Top charts for a category |
GET /v1/apps/:id | 2 | Full app metadata (iTunes Lookup) |
GET /v1/apps/:id/reviews | 2 | User reviews (Apple RSS feed) |
GET /v1/apps/:id/screenshots | 2 | App screenshots by device type |
GET /v1/keywords/ranks | 2 | Apps ranking for a specific keyword |
GET /v1/keywords/metrics | 2 | Search volume and difficulty scores |
GET /v1/apps/:id/keywords/trends | 2 | Historical rank trend for a keyword |
GET /v1/new-releases | 2 | Recently released apps |
GET /v1/discover | 2 | Trending and noteworthy apps |
GET /v1/discover/new-number-1 | 2 | Apps that just reached #1 |
Heavy (3 credits)
| Endpoint | Credits | Description |
|---|
GET /v1/apps/:id/keywords | 3 | All keyword rankings for an app |
GET /v1/keywords/compare | 3 | Competitor keyword overlap analysis |
GET /v1/apps/:id/country-rankings | 3 | Chart positions across countries |
GET /v1/apps/:id/screenshots/competitors | 3 | Competitor screenshot comparison |
GET /v1/categories/:id/top/screenshots | 3 | Screenshots for top apps in a category |
Premium (5 credits)
| Endpoint | Credits | Description |
|---|
GET /v1/apps/:id/intelligence | 5 | Full intelligence report: revenue, downloads, IAPs, similar apps, sentiment |
Credits are only deducted on successful responses (2xx status codes). Failed requests (4xx, 5xx) do not consume credits.
Every authenticated response includes rate limit headers so you can track consumption programmatically:
| Header | Description | Example |
|---|
X-RateLimit-Limit | Total monthly credits for your plan | 100 |
X-RateLimit-Remaining | Credits remaining this month | 95 |
X-RateLimit-Reset | Unix timestamp when credits reset (first of next month) | 1743465600 |
X-Credit-Cost | Credits consumed by this request | 2 |
X-Plan | Your current plan identifier | free |
Example response headers:
HTTP/2 200
Content-Type: application/json
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 93
X-RateLimit-Reset: 1743465600
X-Credit-Cost: 2
X-Plan: free
Use X-RateLimit-Remaining in your code to implement graceful throttling before hitting the limit.
Check Your Usage
Use the usage endpoint to see a detailed breakdown of your current month’s consumption:
curl "https://api.appeeky.com/v1/auth/usage" \
-H "X-API-Key: YOUR_API_KEY"
Response (200 OK):
{
"data": {
"plan": "free",
"monthlyCredits": 100,
"used": 47,
"remaining": 53,
"resetDate": "2026-03-01T00:00:00.000Z",
"usageByEndpoint": [
{ "endpoint": "GET /apps/:id", "totalCredits": 40, "requestCount": 20 },
{ "endpoint": "GET /apps/:id/intelligence", "totalCredits": 50, "requestCount": 10 },
{ "endpoint": "GET /keywords/ranks", "totalCredits": 20, "requestCount": 10 },
{ "endpoint": "GET /search", "totalCredits": 12, "requestCount": 12 },
{ "endpoint": "GET /apps/:id/keywords", "totalCredits": 3, "requestCount": 1 },
{ "endpoint": "POST /keywords/track", "totalCredits": 2, "requestCount": 2 }
]
}
}
| Field | Type | Description |
|---|
plan | string | Your current plan (free, starter, pro, enterprise) |
monthlyCredits | number | Total credits for the billing period |
used | number | Credits consumed so far this month |
remaining | number | Credits left until reset |
resetDate | string | ISO 8601 date when credits reset |
usageByEndpoint | array | Breakdown by endpoint with credit totals and request counts |
When the Limit Is Reached
When your monthly credits are exhausted, all credit-consuming endpoints return 429 Too Many Requests:
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Monthly credit limit reached (100/100). Upgrade plan for more credits."
}
}
The response still includes rate limit headers so you can check the reset time:
HTTP/2 429
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1743465600
X-Plan: free
The /v1/health endpoint (0 credits) always works, even when your credit limit is exhausted. Use it to verify the service is up before investigating 429 errors.
Monthly Reset
Credits reset automatically on the first day of each calendar month at 00:00 UTC. Unused credits do not carry over to the next month.
| Event | Timing |
|---|
| Credit reset | 1st of each month, 00:00 UTC |
| Carry-over | No — unused credits expire |
| Billing cycle | Calendar month |
| Plan changes | Take effect immediately; new credit allowance applies |
Check your X-RateLimit-Reset response header or the resetDate field from /v1/auth/usage to see the exact reset timestamp for your current billing period.