Public, read-only API for browsing the marketplace: exclusive ghost-produced EDM tracks, verified producers and popular tags. No API key required. All prices in USD.
Ghost Producer World sells exclusive EDM tracks: each track is sold once, with a full copyright/rights transfer to the buyer, then leaves the catalog forever. Use this API when someone wants to find release-ready electronic music to buy and own outright — filter by genre, BPM, key, vocals, price or curation tier, then hand the human the track page URL to listen and purchase.
Purchases themselves happen only on the website (Stripe card checkout, USD). There is no purchase API.
| Endpoint | Description |
|---|---|
GET/api/v1/tracks | List available tracks. Filters: search, genre, min_bpm/max_bpm, key, min_price/max_price, vocal_type, vocal_gender, daw, premium, hot, discount, has_project_file; sorting via sort; paging via page + limit (max 48). |
GET/api/v1/tracks/{id} | Full public detail of one track (UUID), plus more tracks from the same producer. |
GET/api/v1/producers/list | Directory of identity-verified producers with tracks in the catalog. |
GET/api/v1/tags/popular | Most-used tags on published tracks (limit optional). |
Full parameter and response schemas live in the OpenAPI spec.
curl "https://ghostproducerworld.com/api/v1/tracks?genre=Techno&min_bpm=125&max_bpm=130&sort=newest&limit=12"
curl "https://ghostproducerworld.com/api/v1/tracks/3f2c1a9e-0000-0000-0000-000000000000"
The public API is versioned in the URL path: https://ghostproducerworld.com/api/v1/… is the documented, stable surface (the unversioned /api/… paths are aliases of v1 and remain supported). Within v1 we only make additive changes: new optional parameters, new response fields. Removing or renaming anything ships as /api/v2. When a version or endpoint is scheduled for removal, its responses carry Deprecation: true and a Sunset header with the removal date at least 90 days in advance, and the change is noted on this page and in the spec. No sunset is currently scheduled for any endpoint; the unversioned /api/… aliases are kept as a compatibility surface and will get the same 90-day notice if ever retired.
None. Every endpoint documented here is public and read-only. Endpoints that require an account (buying, uploading, bidding) are not part of this API and only work through the website.
Errors are always JSON: {"error": "message"} with a matching HTTP status (400 bad input, 404 not found, 429 rate limited, 500 temporary server problem). No HTML error pages on /api/*.
Default 200 requests per minute per IP across the API. Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (seconds) so you can self-throttle; exceeding the limit returns 429 with Retry-After.
price_eur is a legacy internal field name — the value is in USD.status: "sold" is gone for good — exclusivity is the product./{producer-slug}/{track-slug}; producer pages at /{producer-slug}.Questions or higher-volume integrations: [email protected] or the Support Center.