Spotify Catalog Resolver: ISRC/UPC to 256M Tracks
Pricing
from $15,000.00 / 1,000 catalog match reports
Spotify Catalog Resolver: ISRC/UPC to 256M Tracks
Resolve ISRCs, UPCs, ISWCs, or free-text queries to full Spotify catalog metadata (IDs, artists, album, cover, popularity, release date) over a pre-indexed 256M-track snapshot. No Spotify OAuth, no rate wall.
Pricing
from $15,000.00 / 1,000 catalog match reports
Rating
0.0
(0)
Developer
Paul Mikulskis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Resolve ISRCs, UPCs, ISWCs, or free-text queries to full Spotify catalog metadata (Spotify IDs, artists, album, cover art, popularity, release date) in a single call, over a pre-indexed 256M-track / 58M-album / 15M-artist snapshot. No Spotify OAuth workflow, no Web API rate-wall dependency, and bulk all-variant resolution from an owned index.
What does Spotify Catalog Resolver do?
Spotify Catalog Resolver takes a list of identifiers or search terms and returns the matching Spotify catalog entities as structured rows. It runs against a purpose-built, pre-indexed Postgres full-text index of a Spotify metadata snapshot, so it answers ISRC → track, UPC → album, and text → track/artist/album lookups from a warm index in milliseconds, without putting each lookup through the Spotify Web API workflow.
Because it runs on the Apify platform, you get API access, scheduling, integrations (Make, Zapier, n8n), monitoring, and downloadable datasets out of the box.
Why use Spotify Catalog Resolver?
- Bulk ISRC and UPC resolution without the Spotify API workflow. Spotify Search supports identifier filters, but it is OAuth-gated, rate-limited, and single-query oriented; this actor returns bulk and all-variant results from an owned 256M-track index.
- No OAuth workflow or Web API rate-wall dependency. Resolve thousands of identifiers in one run.
- Bulk catalog matching. Paste a list (or a CSV URL) of ISRCs/UPCs/titles and get every match back, plus an optional match report (how many resolved, how many didn't).
- Built for music-tech. Rights and royalty tooling, catalog reconciliation, metadata enrichment, playlist/analytics pipelines, and AI music agents.
How to use Spotify Catalog Resolver
- Pick a Query mode (e.g.
Lookup by ISRC,Search tracks, orBulk resolve). - Add your values to Queries, one identifier or search phrase per item. For bulk jobs you can instead point CSV URL at a public CSV (the first column is used).
- Set Max rows per query (1–50) to cap how many hits each value returns.
- Click Start. Results stream into the dataset, one row per match.
- Download the dataset as JSON, CSV, Excel, or HTML, or pull it from the API.
Input
Configure the run in the Input tab.
| Field | Description |
|---|---|
mode | lookupIsrc, lookupUpc, lookupIswc, searchTracks, searchArtists, searchAlbums, typeahead, or bulk. |
queries | Values to resolve: one ISRC/UPC/ISWC per item, or free text for search modes. |
csvUrl | Bulk mode only: a public CSV URL; the first column of each row is used as a query value. |
limit | Max hit rows returned per input value (1–50). |
types | Typeahead only: restrict to track, artist, and/or album. |
includeReport | Bulk only: add one summary row with matched / not-found counts. |
Example input:
{"mode": "bulk","queries": ["USUG12001402", "GBUM71029604", "00602507122591"],"limit": 1,"includeReport": true}
Output
Each match is one dataset row. A track row looks like:
{"query": "USUG12001402","mode": "lookupIsrc","status": "matched","type": "track","spotifyId": "0VjIjW4GlUZAMYd2vXMi3b","spotifyUrl": "https://open.spotify.com/track/0VjIjW4GlUZAMYd2vXMi3b","isrc": "USUG12001402","name": "Blinding Lights","albumName": "After Hours","albumUpc": "00602508972164","artistNames": ["The Weeknd"],"artistSpotifyIds": ["1Xyo4u8uXC1ZmMpatF05PJ"],"coverUrl": "https://i.scdn.co/image/ab67616d0000b273...","coverWidth": 640,"coverHeight": 640,"durationMs": 200040,"popularity": 92,"releaseDate": "2020-03-20","snapshotId": "2025-07"}
Values with no match produce a free status row (status: "not_found", "invalid", or "warming") so every input is accounted for. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Demo dataset and catalog-match report
The full multi-input demo is free to inspect, no run required. It was generated locally in bulk mode against the live snapshot from 3 identifiers: 2 real ISRCs and 1 synthetic probe not in the catalog.
- Dataset (6 total rows: 5 result rows plus 1 catalog-match-report row): https://api.apify.com/v2/datasets/jTIj4w70lvyT0HyAg/items?format=json&clean=true —
USUG12001402(The Weeknd, "Blinding Lights - Major Lazer Remix") resolves to 2 release variants,GBUM71029604(Queen, "Bohemian Rhapsody") resolves to 2 release variants, andZZZZZ0000001(a synthetic, non-existent ISRC) comes backnot_found. - Catalog-match report: same dataset, the row with
"recordType": "catalog-match-report"— the exact summary artifact a buyer gets fromincludeReport: true. Over these 3 identifiers: 2 matched, 1 not-found, 4 rows resolved. Generating your own report over your own list is the paidcatalog-match-reportevent ($15, see Pricing); reading this sample one is free.
The dataset and report above are real output from the shipped resolver (a local, non-billing bulk run), not mocked. An earlier single-run demo is still up at https://api.apify.com/v2/datasets/237XTcWzSgNldbitT/items?format=json&clean=true: 4 matched rows, two release variants each for USUG12001402 (The Weeknd) and GBUM71029604 (Queen), and no report row.
Related actors
- MLC Works Resolver resolves ISRCs to MLC songwriter/publisher rights and royalty shares. Use it for the rights layer; this actor is catalog metadata, not rights.
Data fields
| Field | Applies to | Description |
|---|---|---|
spotifyId / spotifyUrl | all | Spotify entity ID and open.spotify.com link. |
isrc | track | International Standard Recording Code. |
albumUpc / upc | track / album | Universal Product Code (barcode). |
name | all | Track / artist / album name. |
artistNames / artistSpotifyIds | track / album | Credited artists and their Spotify IDs. |
albumName | track | Parent album. |
coverUrl / coverWidth / coverHeight | track / album | Cover art. |
durationMs / popularity / releaseDate | track | Track detail. |
genres / followersTotal / portraitUrl | artist | Artist detail. |
albumType / label / totalTracks | album | Album detail. |
Pricing
This actor is pay-per-event:
resolved-row: $0.004 per matched row pushed to the dataset.catalog-match-report: $15 for the optional bulk summary report (only whenincludeReportis on).- Actor start: $0.00001 per GB of run memory (a 4 GB run starts for $0.00004).
Beyond that fraction-of-a-cent start event, you are only charged for matches. Not-found, invalid, and warming rows are always free, so a bulk job with misses never bills you for the misses. Resolving 1,000 ISRCs that all match at 1 row each costs about $4.
Tips
- For exact identifier resolution use the
lookup*modes: they are index-backed, and a warm lookup returns in tens of milliseconds. - Use
limit: 1in bulk mode when you only need the canonical match per identifier (keeps cost predictable). - Very common single words (e.g. a bare
"the") are expensive full-text queries and may return partial results; prefer specific titles or identifiers.
FAQ, disclaimers, and support
- Where does the data come from? A pre-indexed metadata snapshot (snapshot
2025-07). It is a point-in-time index, not a live mirror of Spotify. - Is this affiliated with Spotify? No. Spotify is a trademark of Spotify AB; this actor is an independent metadata-resolution tool and is not endorsed by or affiliated with Spotify.
- Coverage. Newer releases after the snapshot date may not be present; unmatched inputs return free status rows.
- Support / custom needs. Use the Issues tab for feedback or to request a custom catalog-resolution solution.