Developers
Developer API
Fetch signals, need gaps, and reports programmatically via the REST API.
Developer API
Fetch ProfitSearcher data programmatically via REST: signals, need gaps, and deep-dive reports. Ideal for plugging into your own research tools, dashboards, or AI workflows.
Quick start
- Sign in and create an API key from the "Developer API" card at the bottom of your dashboard (the full key is shown only once — save it immediately)
- Pass the key in a request header (either style works):
curl "https://www.profitsearcher.com/api/v1/needs?locale=en&per_page=5" -H "Authorization: Bearer ps_live_xxxxxxxx..."
# or with the X-API-Key header
curl "https://www.profitsearcher.com/api/v1/signals" -H "X-API-Key: ps_live_xxxxxxxx..."
Endpoints
| Endpoint | Description |
|---|---|
| GET /api/v1/signals | List signals |
| GET /api/v1/signals/{slug} | Signal detail (full content) |
| GET /api/v1/needs | List need gaps |
| GET /api/v1/needs/{slug} | Need gap detail (full content) |
| GET /api/v1/reports | List reports (metadata + abstract) |
| GET /api/v1/reports/{slug} | Report detail (full-text rules below) |
Common parameters
- locale: zh (default) or en
- page: page number, default 1 (list endpoints only)
- per_page: items per page, default 20, max 100 (list endpoints only)
Response format
Success:
{
"data": [],
"meta": { "total": 42, "page": 1, "per_page": 20, "generated_at": "2026-07-05T00:00:00Z" }
}
Error:
{ "error": { "code": "rate_limited", "message": "Daily request limit reached." } }
Every successful response includes X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset headers.
Quotas and content tiers
- Free accounts: 10 requests total per account (one-time allowance, shared across all keys, does not reset)
- Pro members: 10 requests per account per day (shared across all keys, resets at 00:00 UTC), and report detail responses include the full content_markdown
- With a free key, premium report details omit the full text and include "content_locked": true
- Free allowance exhausted returns 429 (upgrade to Pro); Pro daily quota resets at 00:00 UTC
- Each account can hold up to 5 active keys; revoke them anytime from the dashboard
Error codes
| HTTP | code | Description |
|---|---|---|
| 400 | invalid_request | Invalid parameters |
| 401 | unauthorized | Missing, invalid, or revoked key |
| 404 | not_found | Resource not found |
| 429 | rate_limited | Free allowance exhausted or Pro daily quota exceeded |
API data refreshes immediately after content is published or updated (it shares the same cache-invalidation pipeline as the website).