# Dba Product Details Scraper (`soft_alexist/dba-product-details-scraper`) Actor

Scrape detailed product listings from DBA.dk, Denmark's largest recommerce marketplace. Capture titles, prices, locations, descriptions, images, and metadata from individual items — perfect for price monitoring, market analysis, and inventory tracking.

- **URL**: https://apify.com/soft\_alexist/dba-product-details-scraper.md
- **Developed by:** [Soft Alexist](https://apify.com/soft_alexist) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## DBA.dk Product Scraper: Extract Marketplace Listing Data Efficiently

***

### What Is DBA.dk?

DBA.dk is Denmark's leading online marketplace for buying and selling used products across categories including electronics, furniture, vehicles, and collectibles. With hundreds of thousands of active listings, DBA represents a rich source of secondhand market data. Extracting individual product details manually is inefficient; the **DBA Product Scraper** automates this workflow, delivering structured product records from any DBA listing.

***

### Overview

The **DBA Product Scraper** extracts comprehensive data from individual DBA.dk product listings, converting unstructured marketplace content into machine-readable records. It serves:

- **Price analysts** monitoring secondhand market trends and valuations
- **Resellers** tracking competitor inventory and pricing strategies
- **Market researchers** studying consumer behavior in the recommerce sector
- **Data aggregators** building price comparison or product databases

Key capabilities include bulk URL processing, configurable item limits, graceful error handling, and extraction of 11 essential product fields including images, location data, and full descriptions.

***

### Input Format

The scraper accepts a JSON configuration with product URLs and operational parameters:

```json
{
  "urls": [
    "https://www.dba.dk/recommerce/forsale/item/23544251",
    "https://www.dba.dk/recommerce/forsale/item/23534947",
    "https://www.dba.dk/recommerce/forsale/item/23536279"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Field                 | Description                                                                                                                                                                                 |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `urls`                | Array of direct links to DBA product listing pages. Each URL should point to an individual item detail page (e.g., `/forsale/item/[ID]`). You can add URLs one by one or paste a bulk list. |
| `max_items_per_url`   | Maximum number of records extracted per URL (typically `200` captures the full product record).                                                                                             |
| `ignore_url_failures` | Boolean flag (`true/false`). If `true`, the scraper continues if individual URLs fail, preventing job interruption. Recommended for large batches.                                          |

> **Pro Tip:** Use product URLs from search results or saved lists. Paste multiple URLs to process listings in batch mode efficiently.

***

### Output Format

**Example output record:**

```json
{
  "title": "Iphone 11 Pro Max",
  "location": {
    "position": {
      "lat": 55.6940569,
      "lng": 12.54914572,
      "links": {
        "norortho": {
          "uri": "https://www.dba.dk/map?adId=23544251&lat=55.6940569&lon=12.54914572&zoom=12&postalCode=2200",
          "title": "Flyfoto"
        },
        "finnhybrid": {
          "uri": "https://www.dba.dk/map?adId=23544251&lat=55.6940569&lon=12.54914572&zoom=12&postalCode=2200",
          "title": "Hybridkart"
        },
        "finnvector": {
          "uri": "https://www.dba.dk/map?adId=23544251&lat=55.6940569&lon=12.54914572&zoom=12&postalCode=2200",
          "title": "Stort kart"
        }
      },
      "accuracy": 5,
      "map_image": "https://maptiles.finncdn.no/staticmap?lat=55.6940569&lng=12.54914572&zoom=12&size=400x300&maptype=norwayVector&showPin=false"
    },
    "postal_code": "2200",
    "postal_name": "København N",
    "country_code": "DK"
  },
  "extras": [
    {
      "id": "condition",
      "label": "Stand",
      "value": "Brugt - men i god stand",
      "value_id": 3
    },
    {
      "id": "phone_brand",
      "label": "Mærke",
      "value": "Apple",
      "value_id": 631
    },
    {
      "id": "mobile_memory_size",
      "label": "Hukommelse",
      "value": "64 GB",
      "value_id": 3
    },
    {
      "id": "mobile_model",
      "label": "Model",
      "value": "iPhone 2G-11",
      "value_id": 1
    }
  ],
  "meta": {
    "ad_id": "23544251",
    "owner_id": 2013144340,
    "user_owner": true,
    "has_been_published": true,
    "edited": "2026-08-01T09:12:09.149838+02:00",
    "schema_name": "recommerce-sell",
    "is_inactive": false,
    "is_legacy_schema": false,
    "is_own_ad": false,
    "should_index": true
  },
  "price": 1399,
  "category": {
    "id": 39,
    "value": "Mobiltelefoner",
    "parent": {
      "id": 3217,
      "value": "Telefoner og telefontilbehør",
      "parent": {
        "id": 93,
        "value": "Elektronik og hvidevarer"
      }
    }
  },
  "images": [
    {
      "uri": "https://images.dbastatic.dk/dynamic/default/item/23544251/9619cdbc-a622-402a-be48-973c4099b4bf",
      "width": 4096,
      "height": 3072,
      "description": ""
    },
    {
      "uri": "https://images.dbastatic.dk/dynamic/default/item/23544251/b25494de-daab-4b28-b8ea-0a43e4daaf31",
      "width": 4096,
      "height": 3072,
      "description": ""
    },
    {
      "uri": "https://images.dbastatic.dk/dynamic/default/item/23544251/4bf4f8c0-183f-489b-8ccb-3cacd894b20b",
      "width": 4096,
      "height": 3072,
      "description": ""
    },
    {
      "uri": "https://images.dbastatic.dk/dynamic/default/item/23544251/c2780126-4017-4bd5-95e9-2559e4b53126",
      "width": 1080,
      "height": 2400,
      "description": ""
    },
    {
      "uri": "https://images.dbastatic.dk/dynamic/default/item/23544251/a790dc80-9d8a-4c61-82b4-82be5a2b7993",
      "width": 4096,
      "height": 3072,
      "description": ""
    },
    {
      "uri": "https://images.dbastatic.dk/dynamic/default/item/23544251/f5578f7a-43de-4796-8975-7450bc020771",
      "width": 4096,
      "height": 3072,
      "description": ""
    },
    {
      "uri": "https://images.dbastatic.dk/dynamic/default/item/23544251/0354223c-de61-4b2c-8d1c-f7331fcb6879",
      "width": 4096,
      "height": 3072,
      "description": ""
    },
    {
      "uri": "https://images.dbastatic.dk/dynamic/default/item/23544251/653aaf38-6581-41d3-9712-d0a7b3078dab",
      "width": 4096,
      "height": 3072,
      "description": ""
    },
    {
      "uri": "https://images.dbastatic.dk/dynamic/default/item/23544251/4cc67096-acc9-416f-b4fa-c777be310409",
      "width": 4096,
      "height": 3072,
      "description": ""
    }
  ],
  "disposed": false,
  "ad_view_type_label": "Til salg",
  "description": "Virker fint. Nyeste opdateret IOS. Sælger iPhone 11 Pro Max med stor skærm og batteri med original kasse. Aldrig har været til reparation så alt er original.Der er overfladisk lommerids men ikke kan se nå man bruger den .\nMan kan få cover med\nÅben for bud",
  "is_webstore": false
}
```

Each scraped product returns a record with 11 core fields containing pricing, location, category, and visual data:

#### Product Identification & Core Details

| Field         | Meaning & Usage                                                                                                                                                             |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Title`       | Product name/headline as listed on DBA. Contains the item description buyers see first. Essential for searches and categorization.                                          |
| `Description` | Full product description including condition details, dimensions, materials, and seller notes. HTML-formatted. Use for detailed product information and keyword extraction. |
| `Category`    | Primary product category (e.g., "Electronics," "Furniture," "Vehicles"). Critical for segmentation and market analysis.                                                     |
| `Is Webstore` | Boolean flag indicating whether the seller is a professional webstore or private individual. Differentiates B2C vs. C2C transactions.                                       |

#### Pricing & Market Data

| Field   | Meaning & Usage                                                                                                                             |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `Price` | Listed asking price in DKK (Danish Krone). Primary metric for price monitoring and competitive analysis. Reflects current market valuation. |

#### Location & Logistics

| Field      | Meaning & Usage                                                                                                        |
| ---------- | ---------------------------------------------------------------------------------------------------------------------- |
| `Location` | Geographic location of the item (city/region in Denmark). Used for shipping cost estimation and local market analysis. |

#### Visual Content

| Field    | Meaning & Usage                                                                                                                                           |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Images` | Array of product image URLs. Multiple photos showing product condition, angles, and details. Essential for visual-driven research and listing recreation. |

#### Product Condition & Status

| Field      | Meaning & Usage                                                                                                                                      |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Extras`   | Additional product attributes or features (e.g., "Warranty," "Original Packaging," "Like New"). Qualitative indicators of product quality and value. |
| `Disposed` | Status flag indicating whether the item has been sold or removed from the marketplace. Use to track listing lifecycle and availability.              |

#### User Interface & Metadata

| Field                | Meaning & Usage                                                                                                                                   |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Ad View Type Label` | Display classification of the listing (e.g., "Standard," "Featured," "Highlighted"). Indicates seller's promotional investment in the listing.    |
| `Meta`               | Structured metadata object containing supplementary details (seller ID, posting date, seller reputation, etc.). Useful for advanced segmentation. |

***

### How to Use

1. **Collect product URLs** — Browse DBA.dk, find products of interest, and copy the direct item link from the address bar (format: `https://www.dba.dk/recommerce/forsale/item/[ID]`).

2. **Build your URL list** — Add URLs individually or prepare a bulk list and paste into the `urls` field using the Bulk edit feature.

3. **Configure parameters** — Set `max_items_per_url` to `200` (default) for complete product data. Enable `ignore_url_failures: true` for robust batch runs.

4. **Start the scraper** — Trigger the run and monitor the execution log for real-time progress.

5. **Download results** — Export data as JSON, CSV, or Excel for analysis, databases, or integrations.

**Best practices:**

- Verify URLs point to individual product pages, not search or category pages.
- Use `ignore_url_failures: true` when processing 50+ URLs to avoid interruptions.
- Export to CSV for easy spreadsheet analysis or price comparison workflows.

**Common troubleshooting:**

- If `Images` returns empty, the seller may not have uploaded photos; this is valid data.
- Verify the item is still listed (not sold); check `Disposed` field to confirm.

***

### Use Cases & Business Value

- **Price intelligence:** Monitor pricing trends for secondhand items across categories and time periods
- **Competitive research:** Benchmark competitor listings, pricing strategies, and product condition standards
- **Reseller tools:** Track inventory of other sellers in your niche for market gap identification
- **Market analytics:** Analyze DBA marketplace trends, estimate product lifecycles, and identify demand patterns
- **Data enrichment:** Combine DBA product data with your internal systems for hybrid pricing or recommendation engines

By automating data extraction, the **DBA Product Scraper** reduces manual work, accelerates insights, and enables data-driven decisions in the recommerce and secondhand markets.

***

### Conclusion

The **DBA.dk Product Scraper** is a powerful tool for anyone operating in Denmark's recommerce space. Whether you're a reseller tracking competition, a researcher analyzing market trends, or a platform builder aggregating listings, this scraper delivers the structured product data you need — quickly and reliably. Extract pricing, images, locations, and condition details in one run, and transform marketplace data into actionable intelligence.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Specific product urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## Actor input object example

```json
{
  "urls": [
    "https://www.dba.dk/recommerce/forsale/item/23544251",
    "https://www.dba.dk/recommerce/forsale/item/23534947",
    "https://www.dba.dk/recommerce/forsale/item/23536279",
    "https://www.dba.dk/recommerce/forsale/item/23534831",
    "https://www.dba.dk/recommerce/forsale/item/23533945"
  ],
  "ignore_url_failures": true
}
```

# 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 = {
    "urls": [
        "https://www.dba.dk/recommerce/forsale/item/23544251",
        "https://www.dba.dk/recommerce/forsale/item/23534947",
        "https://www.dba.dk/recommerce/forsale/item/23536279",
        "https://www.dba.dk/recommerce/forsale/item/23534831",
        "https://www.dba.dk/recommerce/forsale/item/23533945"
    ],
    "ignore_url_failures": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("soft_alexist/dba-product-details-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 = {
    "urls": [
        "https://www.dba.dk/recommerce/forsale/item/23544251",
        "https://www.dba.dk/recommerce/forsale/item/23534947",
        "https://www.dba.dk/recommerce/forsale/item/23536279",
        "https://www.dba.dk/recommerce/forsale/item/23534831",
        "https://www.dba.dk/recommerce/forsale/item/23533945",
    ],
    "ignore_url_failures": True,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/dba-product-details-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 '{
  "urls": [
    "https://www.dba.dk/recommerce/forsale/item/23544251",
    "https://www.dba.dk/recommerce/forsale/item/23534947",
    "https://www.dba.dk/recommerce/forsale/item/23536279",
    "https://www.dba.dk/recommerce/forsale/item/23534831",
    "https://www.dba.dk/recommerce/forsale/item/23533945"
  ],
  "ignore_url_failures": true
}' |
apify call soft_alexist/dba-product-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,soft_alexist/dba-product-details-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/fyyvT3zsPMpHIISyS/builds/GGe66vXqdLavnwIV8/openapi.json
