Getting started
Research availability
Explore Recoup research, choose the right identifiers, and handle incomplete data.
On this page
Recoup Research lets you discover artists and tracks, read current metrics, explore audience and playlist activity, and capture recording measurements. Authenticate with your Recoup API key or supported bearer credential. Recoup manages the data connections; you do not need a separate data-service key.
Coverage varies by artist, recording, platform and metric. An empty result means no matching data was returned; it does not prove an artist has no activity or audience.
Choose an identifier
Search by name, inspect the matches, and pass the selected result's id to the
detail endpoints. Treat research IDs as opaque strings: do not parse them or
substitute a Recoup account UUID. Artist-name shortcuts use the first match;
select an explicit ID when names are ambiguous.
For portable recording references, store the ISRC and available Spotify or Apple Music identifiers. Additional response fields and provenance labels may vary as Recoup's data connections change. Preserve returned provenance for traceability without using it to choose a data vendor.
Current track statistics
Supply exactly one of isrc, spotify_track_id, or apple_music_track_id, plus
the required source (the platform, such as spotify). Recoup uses stored
Spotify measurements when available for an ISRC, and otherwise requests current
research data. Preserve data_source and capture timestamps when returned;
missing provenance remains unknown. A displayed play count is not a verified
royalty-bearing stream count.
Research endpoints
| Method | Path | Reference |
|---|---|---|
| GET | /api/research | Search |
| GET | /api/research/albums | Albums |
| GET | /api/research/audience | Audience |
| GET | /api/research/career | Career activities |
| GET | /api/research/insights | Insights activities |
| GET | /api/research/lookup | Spotify artist lookup |
| GET | /api/research/metrics | Current artist metrics |
| GET | /api/research/milestones | Milestones |
| GET | /api/research/playlists | Artist playlists |
| GET | /api/research/profile | Artist profile |
| GET | /api/research/similar | Related artists |
| GET | /api/research/track | Track details |
| GET | /api/research/track/playlists | Track playlists |
| GET | /api/research/tracks | Artist tracks |
| GET | /api/research/urls | Platform URLs |
Understand the results
- Artist metrics are current snapshots. Save dated results to compare them over time.
- Related artists are unweighted; the accepted similarity axes do not change the ranking.
- Artist playlist
status=pastuses all-time scope and can include current placements. - Career, insights and milestones expose available activities. They do not calculate a career score, create an AI report or guarantee a complete timeline.
- Album results can include track-shaped catalog entries. Do not assume every entry is a distinct album.
- Pagination and track-playlist filter behavior depend on the available data connection. Check the returned entries before assuming a filter was applied.
Historical measurement jobs
POST /api/research/measurement-jobs supports source: "historical"
for Spotify backfill. It requires a card on file and returns queue counts with
id: null; enqueueing does not confirm capture completion. Recordings with an
existing historical research measurement can be skipped even when their history
is partial. Inspect the available dates before claiming complete coverage.
Current capture jobs return a snapshot ID.
Costs and unavailable data
Successful research calls cost $0.05 (50,000 micro-dollar credits). Track-name resolution can add separately charged lookup calls; reuse a selected research ID when available. Historical enqueue itself does not deduct research credits; capture work has its own balance and budget checks.
For 402 insufficient_credits, show the returned billingUrl. Surface 429
and unavailable-data errors; use bounded retries for transient failures and stop
when the request cannot be served. Recoup does not promise a Retry-After header
on these routes. Never fill a missing metric with an invented number or zero.