Discover/Duckdns API
live

Duckdns APIdshdaaf.duckdns.org

Browse BP's complete music catalog to discover labels and view their metadata, including release counts and synchronization status. Organize and filter through the entire label database to find exactly what you're looking for.

This API takes change requests — .
Endpoint health
monitored
list_catalog
Checks pendingself-healing
Endpoints
1
Updated
3h ago
This call costs1 credit / call— charged only on success
Try it

No input parameters required.

api.parse.bot/scraper/f4c270a6-ce63-4369-bd3b-26e2a4b1cc96/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/f4c270a6-ce63-4369-bd3b-26e2a4b1cc96/list_catalog' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 dshdaaf-duckdns-org-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: BP Catalog SDK — bounded, re-runnable; every call capped."""
from parse_apis.dshdaaf_duckdns_org_api import BPCatalog, ParseError

client = BPCatalog()

# List all labels in the catalog, capped at 5 for demonstration.
for label in client.labels.list(limit=3):
    print(label.name, label.release_count, label.slug)

# Grab the first label for inspection.
first = client.labels.list(limit=1).first()
try:
    detail = client.labels.list(limit=1).first()
    print(detail.name, detail.id, detail.last_synced)
except ParseError as e:
    print(f"error: {e.code}")

print("exercised: labels.list")
All endpoints · 1 totalmissing one? ·

Retrieve all music labels in the catalog. Each label includes its name, slug, last sync timestamp, and total release count. Results are returned in a single page (the source provides all labels in one response).

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "items": "array of label objects with id, name, slug, last_synced, and release_count",
    "total": "total number of labels returned"
  },
  "sample": {
    "data": {
      "items": [
        {
          "id": "131706",
          "name": "1001 Recordings",
          "slug": "1001-recordings",
          "last_synced": "2026-07-23T18:55:43.997Z",
          "release_count": 15
        },
        {
          "id": "56958",
          "name": "Afterlife Records",
          "slug": "afterlife-records",
          "last_synced": "2026-07-23T18:55:46.143Z",
          "release_count": 112
        }
      ],
      "total": 63
    },
    "status": "success"
  }
}

About the Duckdns API

The Duckdns API on Parse exposes 1 endpoint for the publicly available data on dshdaaf.duckdns.org. Calls return JSON over HTTPS and are billed per successful response.

Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.