Airbit APIairbit.com ↗
Access Airbit beat listings, top charts, producer catalogs, and featured playlists via a structured API. Filter by genre, BPM, mood, key, and price.
What is the Airbit API?
This API provides access to 5 endpoints covering the Airbit music marketplace, letting developers query beat listings, ranked charts, producer catalogs, and curated playlists. The search_beats endpoint accepts filters across genre, mood, BPM range, price, musical key, duration, and tags, returning paginated beat objects with full pricing, artwork, and streaming URL fields. Beat-level detail and producer-level browsing are both supported.
curl -X POST 'https://api.parse.bot/scraper/67696d42-9ee1-40ed-8902-73cd6cb0afd5/search_beats' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": "1",
"genres": "[\"hip-hop\"]"
}'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 airbit-com-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.
from parse_apis.airbit_api import Airbit, ChartAlias, ChartPeriod
airbit = Airbit()
# Browse top selling beats this week
chart = airbit.chart(alias=ChartAlias.TOP_SELLING_BEATS)
for entry in chart.entries(period=ChartPeriod.WEEK, limit=5):
print(entry.position, entry.chartable.name, entry.chartable.user.username)
# Search for hip-hop beats with free downloads
for beat in airbit.beats.search(genres='["hip-hop"]', free_download_only=True, limit=5):
print(beat.name, beat.bpm, beat.key, beat.duration)
# Get full details for a beat
detail = airbit.beats.details(username="NlProduction", slug="standing-ovation-buy-1-get-4-free")
print(detail.name, detail.tempo, detail.plays, detail.likes)
# Browse a producer's catalog
producer = airbit.producer(id="30066")
for beat in producer.beats(search="glory", limit=3):
print(beat.name, beat.alias, beat.play_count)
# Discover featured playlists
for playlist in airbit.playlists.featured(limit=3):
print(playlist.name, playlist.item_count, playlist.follows_count)
Search for beats on the Airbit marketplace with various filters including genres, moods, tags, BPM range, price range, and duration. Genre aliases are resolved to internal IDs automatically. Returns paginated results of 20 beats per page. When no filters are applied, returns the most recently active beats.
| Param | Type | Description |
|---|---|---|
| bpm | string | JSON object with min/max BPM (e.g. '{"min":120,"max":160}'). |
| keys | string | JSON array of musical keys (e.g. '["C min","D maj"]'). |
| page | integer | Page number for pagination. |
| tags | string | JSON array of tag strings (e.g. '["future","drake"]'). |
| moods | string | JSON array of mood aliases (e.g. '["dark","chill"]'). |
| price | string | JSON object with min/max price in USD (e.g. '{"min":10,"max":50}'). |
| genres | string | JSON array of genre aliases (e.g. '["hip-hop","trap"]'). Over 100 genres available including hip-hop, trap, pop, rnb, soul, rock, jazz, afrobeat, drill, reggaeton, lo-fi, cinematic, edm, country, gospel, and many more. |
| duration | string | JSON object with min/max duration in seconds (e.g. '{"min":60,"max":240}'). |
| exclusiveOnly | boolean | Only return beats with exclusive licenses available. |
| proSellersOnly | boolean | Only return beats from pro sellers. |
| freeDownloadOnly | boolean | Only return beats available for free download. |
{
"type": "object",
"fields": {
"data": "array of beat objects with id, name, alias, bpm, key, duration, genre, pricing, user info, artwork, and streaming URLs",
"paginatorInfo": "object with total, hasMorePages, currentPage, count, lastPage, perPage"
},
"sample": {
"data": {
"data": [
{
"id": "3265671",
"bpm": 0,
"key": "F♯ maj / G♭ maj",
"name": "I'm Done (With Hook)",
"user": {
"id": "16806",
"name": "Tone Jonez",
"username": "ToneJonez"
},
"alias": "im-done-with-hook",
"genre": {
"id": "32",
"name": "Hip Hop",
"alias": "hip-hop"
},
"pricing": [
{
"id": "12575700",
"price": "50.00",
"license": {
"id": "6932"
},
"discount": true
}
],
"duration": "03:15",
"playCount": 3914,
"isForFreeDownload": false
}
],
"paginatorInfo": {
"count": 20,
"total": 10000,
"perPage": 20,
"lastPage": 500,
"currentPage": 1,
"hasMorePages": true
}
},
"status": "success"
}
}About the Airbit API
Beat Search and Detail
The search_beats endpoint accepts any combination of structured filter parameters — genres, moods, tags, keys, bpm, price, and duration — each passed as JSON objects or arrays. Results are paginated via the page parameter and include beat objects with fields such as id, name, alias, bpm, key, duration, genre, pricing, artwork, and streaming URLs. Note that keyword text search is not supported here; filtering must be done through the provided parameter types. The get_beat_details endpoint retrieves a single beat by its username and slug (as they appear in the marketplace URL), adding fields like plays, likes, tags, and moods not present in search results.
Charts and Producer Catalogs
The get_top_charts endpoint accepts a required alias parameter identifying which chart to retrieve — options include top-selling beats, top-earning producers, and similar ranked lists — along with an optional period of week, month, or all_time. Each chart entry includes a position and full beat or user details. The get_producer_beats endpoint takes a numeric user_id (obtainable from beat detail or chart responses) and returns the producer's full marketplace catalog, with an optional search keyword to filter within that catalog.
Playlists
The get_featured_playlists endpoint returns platform-curated playlists sorted by most recently updated. Each playlist object includes id, name, description, followsCount, itemCount, owner, and artwork. The limit and page parameters control how many results are returned per request. Playlists are Airbit-curated rather than user-generated, so the data reflects editorially selected collections.
The Airbit API is a managed, monitored endpoint for airbit.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when airbit.com 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 airbit.com 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 beat discovery tool that filters Airbit inventory by BPM range, genre, and mood for music producers.
- Track weekly and monthly top-selling beats using the
get_top_chartsendpoint with theperiodparameter. - Aggregate a producer's full catalog by user ID to display their beats on a portfolio or profile page.
- Monitor price ranges across genres by combining
search_beatsfilters with thepricingfield in responses. - Identify trending producers by querying the top-earning producers chart and extracting ranked user details.
- Populate a playlist browser using
get_featured_playlistswithfollowsCountanditemCountmetadata. - Cross-reference beat tags and moods from
get_beat_detailsto build genre and mood taxonomy tooling.
| 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 Airbit have an official public developer API?+
What does `get_beat_details` return that `search_beats` does not?+
get_beat_details returns additional per-beat fields including plays, likes, tags, moods, and full st (streaming track) details. The search_beats endpoint returns a broader set of beats with core metadata but omits engagement counts and tag/mood arrays. Use get_beat_details when you need the full record for a specific beat.Can I do keyword text search across all beats?+
search_beats. That endpoint accepts only structured filters: genres, moods, tags, keys, bpm, price, and duration. Within a specific producer's catalog, get_producer_beats does accept a search keyword string to filter results.Does the API expose beat licensing terms or contract details?+
pricing fields on beat objects, but detailed licensing terms, contract text, or lease-type breakdowns are not currently part of the response schema. The API covers beat pricing, metadata, and catalog structure. You can fork it on Parse and revise to add an endpoint targeting individual beat licensing detail pages.How does pagination work across endpoints?+
search_beats, get_producer_beats, get_top_charts, and get_featured_playlists — all support a page integer parameter. Responses include a paginatorInfo object (or equivalent) with total, hasMorePages, currentPage, lastPage, perPage, and count fields so you can implement full paginated traversal.