ToolSpotter API
Base URL: https://toolspotter.com/api/v1
Authentication
Pass your API key as a Bearer token. Keys come in two flavors:
ts_live_…— production, counts against your quota.ts_test_…— returns real data, doesn’t count against your quota.
Authorization: Bearer ts_live_32chars…Rate limits
Every response carries these headers:
X-RateLimit-Limit— your quota for the active window.X-RateLimit-Remaining— how many requests remain.X-RateLimit-Reset— unix timestamp when the window resets.Retry-After— included on 429 responses.
Free: 1,000 requests rolling 24h. Developer: 50,000 requests rolling 30d. Business: 500,000 requests rolling 30d. Enterprise: custom.
Attribution (Free plans)
If you’re on the Free tier, you must render a visible “Powered by ToolSpotter” link on every page that displays API data:
<a href="https://toolspotter.com" data-powered-by="toolspotter" rel="noopener">
Powered by ToolSpotter
</a>We sample compliance manually. Upgrade to Developer or Business to remove the requirement.
Endpoints
/api/v1/toolsscope: toolsList active tools. Supports filtering, pagination, sorting.
| category ? | Category slug |
| pricing_model ? | free | freemium | paid | enterprise |
| min_rating ? | Number 0-5 |
| sort ? | rating | newest | clicks (default: rating) |
| page ? | Integer ≥ 1 (default: 1) |
| limit ? | Integer 1-50 (default: 20) |
curl "https://toolspotter.com/api/v1/tools?category=ai-writing&limit=5" \
-H "Authorization: Bearer ts_live_your_key"/api/v1/tools/:slugscope: toolsFetch a single tool by slug.
curl "https://toolspotter.com/api/v1/tools/chatgpt" \
-H "Authorization: Bearer ts_live_your_key"/api/v1/tools/:slug/reviewsscope: reviews (Business)Published user reviews for a tool. Business plan.
| limit ? | Integer 1-50 (default: 20) |
curl "https://toolspotter.com/api/v1/tools/chatgpt/reviews" \
-H "Authorization: Bearer ts_live_your_business_key"/api/v1/tools/:slug/pricesscope: prices (Business)Plan-level pricing snapshot. Business plan.
curl "https://toolspotter.com/api/v1/tools/chatgpt/prices" \
-H "Authorization: Bearer ts_live_your_business_key"/api/v1/categoriesscope: categoriesAll 26 categories with tool counts.
curl "https://toolspotter.com/api/v1/categories" \
-H "Authorization: Bearer ts_live_your_key"/api/v1/categories/:slugscope: categoriesSingle category + top tools.
| limit ? | Integer 1-50 (default: 20) |
curl "https://toolspotter.com/api/v1/categories/ai-coding?limit=10" \
-H "Authorization: Bearer ts_live_your_key"/api/v1/searchscope: searchFull-text search. Free: up to 20 results. Paid: up to 50.
| q * | Query string (min 2 chars) |
| limit ? | Integer (≤20 Free, ≤50 paid) |
curl "https://toolspotter.com/api/v1/search?q=video+editor&limit=10" \
-H "Authorization: Bearer ts_live_your_key"Errors
All errors follow the same shape:
{
"error": {
"type": "rate_limit_exceeded",
"message": "Quota exhausted for this window.",
"code": 429
}
}| Type | Status | Meaning |
|---|---|---|
| unauthorized | 401 | Missing or malformed Authorization header. |
| invalid_key | 401 | Key not recognised. |
| revoked_key | 401 | Key was revoked. |
| past_due | 402 | Subscription is past due. Update billing. |
| scope_not_allowed | 403 | Endpoint requires a higher plan. |
| attribution_violation | 403 | Attribution removed on Free plan. |
| rate_limit_exceeded | 429 | Quota exhausted. See Retry-After header. |
| bad_request | 400 | Invalid query parameters. |
| not_found | 404 | Resource does not exist. |
| server_error | 500 | Unexpected error — please retry. |
Fields never exposed
These tool columns are ToolSpotter-internal and not returned on any plan:
affiliate_url,affiliate_id,commission_rate,affiliate_network- Scraper-internal fields (
source_url,auto_blog_post_id,video_searched_at)
You get website_url(the vendor’s site) instead of the redirect URL.