# DBA Scraper — Denmark Marketplace & Used Cars (dba.dk) (`hipersoft/dba-scraper`) Actor

Scrape DBA.dk, Denmark's biggest marketplace: items for sale and used cars with price in DKK, location, coordinates, photos, seller type and date; cars add make, model, version, year, km, fuel, gearbox and dealer. Export CSV/JSON.

- **URL**: https://apify.com/hipersoft/dba-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00075 / listing

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## DBA Scraper: Denmark Marketplace Ads & Used Cars (dba.dk)

**DBA Scraper** extracts listings from **DBA.dk (Den Blå Avis)**, Denmark's largest marketplace for second-hand items and used cars. Search the **marketplace (Køb & Salg)** for anything — bikes, furniture, phones, prams, electronics — or **used cars (Biler)**. Every ad includes the **title, price in DKK, location, GPS coordinates, photos, private or business seller and publication time**. Car ads also include **make, model, version, model year, mileage in km, fuel, gearbox, registration number and dealer name**. Filter by **price**, **model year**, **mileage** and **private sellers**, and export to **CSV, Excel or JSON**.

### What does DBA Scraper do?

- 🇩🇰 **Marketplace (Køb & Salg)**: cykler, sofaer, iPhones, barnevogne, møbler, værktøj…
- 🚗 **Used cars**: Volvo, Volkswagen, Tesla, Toyota… with vehicle details.
- 💰 **Prices** in DKK with price filters.
- 📍 **Location** and **coordinates** for every ad.
- 🧑 **Seller type**: private or business.
- 📸 **Photos**, photo count and **publication time**.
- 📈 **Large searches split automatically by price** to go past the 50-page limit.

### What data can you scrape from DBA?

| Field | Description |
|---|---|
| ID, title, link | DBA ad |
| Price, currency | Price in DKK |
| Location, coordinates | Place, latitude, longitude |
| Seller type | Private or business |
| Trade type | Til salg, Købes… |
| Photos | Image links and count |
| Published | Publication time |
| Car details | Make, model, version, year, km, fuel, gearbox, reg. number, dealer |

### Use cases for DBA data

- **Resellers**: find underpriced items and compare second-hand prices in Denmark.
- **Car dealers**: monitor private and dealer car prices for any model.
- **Market research**: track second-hand prices for electronics, furniture and bikes.
- **Price alerts**: schedule searches and catch new ads as they appear.

### How to scrape DBA

1. Click **Try for free** to open DBA Scraper in Apify Console.
2. Choose **Marketplace** or **Used cars** and enter **search terms**.
3. Optionally set **price**, **year**, **mileage** or **private sellers only**.
4. Set **Max listings** and click **Start**.
5. Download the ads as **CSV, Excel or JSON**.

### Input

#### Example input

```json
{
  "category": "marketplace",
  "searchTerms": ["cykel"],
  "priceTo": 5000,
  "privateOnly": true,
  "maxItems": 500
}
```

| Field | Description |
|---|---|
| **Category** | Marketplace or used cars. |
| **Search terms** | Keywords, one search each. Empty = everything. |
| **Price from / to** | Price range in DKK. |
| **Model year from / to** | Cars only. |
| **Max mileage in km** | Cars only. |
| **Private sellers only** | Only private ads. |
| **Max listings** | Stop after this many (0 = no limit). |

### Output

#### Marketplace example

```json
{
  "id": "25587146",
  "title": "🚴Ny El cykel Mustang 🔋nyrenoveret batteri 17Ah🔋",
  "url": "https://www.dba.dk/recommerce/forsale/item/25587146",
  "price": 4000,
  "currency": "DKK",
  "location": "Gedsted",
  "latitude": 56.69091,
  "longitude": 9.36544,
  "sellerType": "private",
  "tradeType": "Til salg",
  "imageCount": 5,
  "publishedAt": "2026-10-06T18:59:47.000Z",
  "search": "cykel"
}
```

#### Car example

```json
{
  "id": "25439637",
  "title": "Volvo S80",
  "url": "https://www.dba.dk/mobility/item/25439637",
  "price": 15000,
  "currency": "DKK",
  "location": "Esbjerg V",
  "sellerType": "private",
  "make": "Volvo",
  "model": "S80",
  "version": "aut.",
  "year": 2001,
  "mileageKm": 327000,
  "fuel": "Benzin",
  "transmission": "Automatisk",
  "registrationNumber": "EG30846",
  "search": "volvo"
}
```

### How much does it cost to scrape DBA?

DBA Scraper uses **pay-per-listing** pricing: a small fixed price per ad, with automatic discounts on higher Apify plans. See the **Pricing** tab for the exact price.

### More Nordic marketplace data

- [Blocket Scraper](https://apify.com/hipersoft/blocket-scraper): Sweden's marketplace and used cars.
- [Finn Scraper](https://apify.com/hipersoft/finn-scraper): Norway's marketplace.
- [Tori Scraper](https://apify.com/hipersoft/tori-scraper): Finland's marketplace.

### FAQ

**How many ads can I get?**
DBA shows up to 50 pages per search. For bigger searches without a price filter, the scraper splits by price automatically.

**Can I monitor new ads?**
Yes. Schedule the scraper; `publishedAt` shows when each ad was posted.

**What formats can I export?**
CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.

**Can I integrate DBA Scraper with other apps?**
DBA Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JS/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal to scrape DBA?**
The scraper only collects publicly listed ads and does not collect private sellers' names or contact details. You are responsible for using the data in line with DBA's terms and the GDPR.

### Related Actors

- [Blocket Scraper](https://apify.com/hipersoft/blocket-scraper)
- [Finn Scraper](https://apify.com/hipersoft/finn-scraper)
- [Tori Scraper](https://apify.com/hipersoft/tori-scraper)

### Notes

Original clean-room implementation. Returns only public data. Not affiliated with DBA or Schibsted.

# Actor input Schema

## `category` (type: `string`):

Marketplace items (Køb & Salg) or used cars.

## `searchTerms` (type: `array`):

What to search, e.g. cykel, sofa, iphone, barnevogn, volvo, tesla model 3. Each term is a separate search. Leave empty for everything.

## `priceFrom` (type: `integer`):

Minimum price.

## `priceTo` (type: `integer`):

Maximum price.

## `yearFrom` (type: `integer`):

Cars only.

## `yearTo` (type: `integer`):

Cars only.

## `maxMileage` (type: `integer`):

Cars only.

## `privateOnly` (type: `boolean`):

Only ads from private sellers.

## `maxItems` (type: `integer`):

Stop after this many listings. 0 means no limit.

## `proxyConfiguration` (type: `object`):

Not required for normal use.

## Actor input object example

```json
{
  "category": "marketplace",
  "searchTerms": [
    "cykel"
  ],
  "privateOnly": false,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "cykel"
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/dba-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["cykel"],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/dba-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "cykel"
  ],
  "maxItems": 50
}' |
apify call hipersoft/dba-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/dba-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fD041stu1r3B44eNZ/builds/MaQe4NqmPfgbADsJ9/openapi.json
