DBA APIdba.dk ↗
Access DBA.dk listings, car inventory, pricing, and categories via 5 endpoints. Search general goods and automotive listings with full detail responses in DKK.
What is the DBA API?
The DBA.dk API provides 5 endpoints for searching and retrieving listings from Denmark's largest second-hand marketplace. The search_listings endpoint accepts a keyword query with optional category filtering and sort order, returning paginated results with name, price, condition, and image. Separate endpoints cover the automotive section, and a category browser exposes recommerce and mobility category IDs needed for precise filtering.
curl -X GET 'https://api.parse.bot/scraper/ffb81583-8e8a-45e5-81a0-aaf601bdd0d8/search_listings?page=1&sort=PRICE_ASC&query=iphone&category=0.93' \ -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 dba-dk-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.dba_dk_scraper_api import DBA, Sort, ListingSummary, Listing, CarListingSummary, CarListing, Category
dba = DBA()
# Search for electronics listings sorted by price
for item in dba.listingsummaries.search(query="iphone", sort=Sort.PRICE_ASC, category="0.93"):
print(item.listing_id, item.name, item.price, item.currency)
# Drill into full details
detail = item.details()
print(detail.name, detail.price, detail.condition, detail.description)
break
# Get a specific listing directly by ID
listing = dba.listings.get(listing_id="22122834")
print(listing.name, listing.price, listing.currency, listing.condition)
# Search car listings
for car in dba.carlistingsummaries.search(query="audi"):
print(car.listing_id, car.name, car.price)
car_detail = car.details()
print(car_detail.brand, car_detail.model, car_detail.currency)
break
# Get a car listing directly
car = dba.carlistings.get(listing_id="21703841")
print(car.name, car.brand, car.model, car.price)
# Browse available categories
for cat in dba.categories.list():
print(cat.name, cat.url, cat.id)
Full-text search across DBA.dk's recommerce marketplace. Returns paginated listing summaries with price, condition, and image. Sorting and category filtering narrow results server-side. Each result carries a listing_id for drill-down via get_listing_detail.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| queryrequired | string | Search keyword (e.g. 'iphone', 'sofa'). |
| category | string | Category ID to filter by (e.g. '0.93' for Elektronik og hvidevarer). IDs available from browse_categories endpoint. |
{
"type": "object",
"fields": {
"page": "string, current page number",
"query": "string, the search keyword used",
"listings": "array of listing summary objects with listing_id, name, url, price, currency, condition, image"
},
"sample": {
"data": {
"page": "1",
"query": "iphone",
"listings": [
{
"url": "https://www.dba.dk/recommerce/forsale/item/22122834",
"name": "Iphone 6s med original oplader",
"image": "https://images.dbastatic.dk/dynamic/default/item/22122834/dbd914b5-1280-4a08-98b2-83bdeab5e86f",
"price": "450",
"currency": "DKK",
"condition": "https://schema.org/UsedCondition",
"listing_id": "22122834"
}
]
},
"status": "success"
}
}About the DBA API
General Marketplace Endpoints
The search_listings endpoint takes a required query string and optional category, sort (PRICE_ASC, PRICE_DESC, or DATE), and page parameters. Results return an array of listing objects with name, url, price, currency, condition, and image. To get full detail on any item, pass its numeric ID (found in the listing URL) to get_listing_detail, which returns fields including description, a specs key-value object, multiple images, seller name, and condition (e.g., UsedCondition). All prices are in DKK.
Automotive Listings
The search_car_listings endpoint targets DBA.dk's mobility section. In addition to the query keyword, it accepts make and model parameters for filtered results. The corresponding get_car_listing_detail endpoint returns structured car-specific fields: brand, model, location, and a specs object covering attributes like model year, mileage, and fuel type that are not present in general listing responses.
Category Browsing
The browse_categories endpoint requires no inputs and returns both recommerce categories (with numeric id values such as 0.93 for Elektronik og hvidevarer) and mobility categories (cars, boats, motorcycles). These IDs feed directly into the category parameter of search_listings, allowing precise scoped searches rather than full-marketplace keyword queries.
The DBA API is a managed, monitored endpoint for dba.dk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dba.dk 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 dba.dk 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?+
- Track price trends on used electronics by querying
search_listingswith category0.93and sorting byPRICE_ASC. - Aggregate used car listings by make and model to compare asking prices across Denmark using
search_car_listings. - Build a deal-alert tool that monitors new listings for a specific keyword by polling
search_listingssorted byDATE. - Extract car specs (mileage, fuel type, model year) from
get_car_listing_detailto populate a vehicle comparison tool. - Map seller locations from
get_car_listing_detail'slocationfield to visualize inventory distribution across Danish regions. - Pull full listing descriptions and images from
get_listing_detailto feed a recommerce resale platform. - Enumerate DBA.dk's category tree via
browse_categoriesto build a structured category navigation for a local search index.
| 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 DBA.dk have an official developer API?+
What does `get_car_listing_detail` return that `get_listing_detail` does not?+
get_car_listing_detail returns automotive-specific fields: brand, model, and location, plus a specs object that includes attributes like model year, mileage, and fuel type. The general get_listing_detail endpoint also has a specs object but does not guarantee those vehicle fields — it returns whatever key-value specification pairs the listing provides.Can I filter `search_listings` by price range?+
sort parameter (PRICE_ASC, PRICE_DESC, or DATE) and a category ID for scoped searches, but there is no min/max price filter parameter currently. You can fork this API on Parse and revise it to add price range filtering if that parameter becomes available.Are seller contact details (phone, email) included in listing responses?+
get_listing_detail returns a seller name field when available, and get_car_listing_detail returns a location field, but neither endpoint exposes phone numbers or email addresses. You can fork this API on Parse and revise it to surface additional seller contact data if the source exposes it.How does pagination work across search endpoints?+
search_listings and search_car_listings accept an integer page parameter and return a page field in the response confirming the current page. There is no total-page-count or total-result-count field in the response, so you iterate until you receive an empty listings array.