X-Minus APIx-minus.pro ↗
Search karaoke backing tracks, retrieve full lyrics and file details, and fetch the top 50 charts from X-Minus.pro via a clean REST API.
What is the X-Minus API?
The X-Minus.pro API exposes 3 endpoints for searching, retrieving, and ranking karaoke instrumental tracks. The search_tracks endpoint accepts a song name or artist query and returns matched tracks with duration, bitrate, and direct URL, while get_track delivers per-track metadata including full lyrics, file size, rating, and upload date. A third endpoint surfaces the site's current top 50 most-played backing tracks with no inputs required.
curl -X GET 'https://api.parse.bot/scraper/fab46e26-af25-40da-b33d-cf320a873349/search_tracks?query=Queen' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace x-minus-pro-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: X-Minus.pro karaoke tracks — search, browse top charts, get full lyrics."""
from parse_apis.x_minus.pro_karaoke_tracks_api import XMinus, TrackNotFound
client = XMinus()
# Search for karaoke tracks by artist/song name; limit= caps total items.
for track in client.tracks.search(query="Queen", limit=5):
print(track.title, track.artist, track.duration)
# Drill into one track's full detail (lyrics, rating, file info).
summary = client.tracks.search(query="Bohemian Rhapsody", limit=1).first()
if summary:
detail = summary.details()
print(detail.title, detail.artist, detail.version_info)
print(detail.lyrics[:200])
# Browse related tracks from the same artist
for related in detail.related_tracks[:3]:
print(related.title, related.duration)
# Top 50 most popular tracks on the platform
for hit in client.tracks.top(limit=5):
print(hit.title, hit.artist, hit.info)
# Typed error handling for a non-existent track
try:
bad = client.tracks.search(query="zzz_nonexistent_xyzzy", limit=1).first()
if bad:
bad.details()
except TrackNotFound as exc:
print(f"Track not found: {exc.track_id}")
print("exercised: tracks.search / tracks.top / summary.details / TrackNotFound")Full-text search over karaoke backing tracks by song name or artist name. Returns matching tracks with metadata (duration, bitrate, type) and matching artist names. Results are a single page of up to ~70 tracks ordered by relevance. Each returned track summary carries an id and slug suitable for fetching full details via get_track.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search query - can be a song name, artist name, or keywords. |
{
"type": "object",
"fields": {
"query": "the search query echoed back",
"tracks": "array of track summary objects with id, title, artist, duration, url, slug, and info",
"artists": "array of matching artist objects with name and url",
"total_tracks": "integer count of tracks returned"
},
"sample": {
"data": {
"query": "Queen",
"tracks": [
{
"id": "23315",
"url": "https://x-minus.pro/track/23315/killer-queen",
"info": "192 kbps guitar",
"slug": "killer-queen",
"title": "Killer Queen #5",
"artist": "Queen",
"duration": "3:02"
}
],
"artists": [
{
"url": "https://x-minus.pro/artist/queen",
"name": "Queen"
}
],
"total_tracks": 66
},
"status": "success"
}
}About the X-Minus API
Search and Track Discovery
The search_tracks endpoint accepts a query string — artist name, song title, or keywords — and returns two parallel arrays: a tracks array and an artists array. Each track object includes id, title, artist, duration, url, and an info field. The total_tracks integer tells you how many matches were found. Artist objects include name and url for further lookup. Both the numeric id and the URL slug from the url field are needed to call get_track.
Detailed Track Data and Lyrics
get_track requires two inputs extracted from search_tracks results: track_id (the numeric ID, e.g. 23315) and slug (the URL path segment, e.g. killer-queen). The response adds fields not available in search results: lyrics (full song text), likes, rating (all-time score), uploaded (date string), file_size (with bitrate), and a type field describing the track format. A related_tracks set is also returned for navigation between similar recordings.
Top Charts
get_top_tracks requires no parameters and returns a ranked list of up to 50 currently popular backing tracks, each carrying the same id, title, artist, duration, url, and info fields as search results. The total field confirms how many entries were returned. This endpoint is useful for building trending dashboards or seeding a catalog without a specific query.
The X-Minus API is a managed, monitored endpoint for x-minus.pro — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when x-minus.pro changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official x-minus.pro API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a karaoke app that searches tracks by song title and displays lyrics from the
lyricsfield during playback - Populate a backing-track catalog by iterating
get_top_tracksresults to seed a database with popular instrumentals - Display track metadata cards showing
duration,file_size,bitrate, andratingalongside each search result - Create artist-focused pages by filtering
search_tracksresults byartistand linking out via the returnedurl - Monitor chart movement by periodically calling
get_top_tracksand comparing ranked position over time - Feed a recommendation engine using
related_tracksdata returned byget_trackfor a given song
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does X-Minus.pro offer an official developer API?+
What does `get_track` return beyond what `search_tracks` already provides?+
get_track adds fields not present in search results: full lyrics, likes count, all-time rating, uploaded date, and file_size with bitrate. It also returns a type field indicating the track format. Both the track_id and slug from a search_tracks result are required inputs.Can I retrieve more than 50 tracks from the top charts, or paginate through results?+
get_top_tracks returns a fixed list of up to 50 tracks with no pagination parameters. search_tracks also returns results without a built-in page/offset input. You can fork this API on Parse and revise it to add pagination or deeper chart coverage if your use case requires it.Does the API expose audio file download URLs for the backing tracks?+
url field pointing to the track's page and an info field, but direct audio file download URLs are not currently a returned field. You can fork this API on Parse and revise it to add direct file URL extraction to the response.Is the `lyrics` field always populated?+
lyrics field is returned by get_track, but availability depends on whether lyrics have been associated with that specific track on X-Minus.pro. Not all tracks on the site have lyrics attached, so the field may be empty or absent for some entries.