{
  "openapi": "3.0.1",
  "info": {
    "title": "DBA.dk Scraper API - Denmark Classifieds & Cars",
    "description": "Every DBA.dk ad in a clean schema: price in DKK, location with coordinates, publication time, images, and private-vs-dealer. Paste a saved DBA search and its filters are honoured exactly. Car searches add make, model, year and real kilometres. Failures are free, no run-start fee.",
    "version": "1.0",
    "x-build-id": "9enxBNADHo8jQfqyY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vonsensey~dba-dk-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vonsensey-dba-dk-scraper-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/vonsensey~dba-dk-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-vonsensey-dba-dk-scraper-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/vonsensey~dba-dk-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-vonsensey-dba-dk-scraper-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "title": "Search term",
            "type": "string",
            "description": "What to search for, in any language the site accepts. Runs against every selected source, so one word gives you the same search in all four countries. Defaults to a sample term so an empty run does something cheap and sensible rather than sweeping every category.",
            "default": "cykel"
          },
          "startUrls": {
            "title": "Saved-search URLs",
            "type": "array",
            "description": "Paste search URLs straight from blocket.se, finn.no, dba.dk or tori.fi. Build the filters you want on the site — region, category, price band, condition, mileage — copy the address bar, and they are honoured exactly. This is the fastest way to get precisely the ads you want.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which sites to search. Leave empty and the right sources for your chosen vertical are picked for you: all four marketplaces for classifieds, Blocket/FINN/DBA for cars, Platsbanken and FINN for jobs, the Norwegian and Finnish registers for companies.",
            "items": {
              "type": "string",
              "enum": [
                "blocket",
                "finn",
                "dba",
                "tori",
                "brreg",
                "prh",
                "jobtech"
              ],
              "enumTitles": [
                "Blocket - Sweden",
                "FINN - Norway",
                "DBA - Denmark",
                "Tori - Finland",
                "Brønnøysundregistrene - Norwegian companies",
                "PRH / YTJ - Finnish companies",
                "Platsbanken - Swedish jobs"
              ]
            },
            "default": [
              "dba"
            ]
          },
          "vertical": {
            "title": "What kind of listing",
            "enum": [
              "marketplace",
              "car",
              "job",
              "company"
            ],
            "type": "string",
            "description": "Classifieds, cars, jobs or companies. Not every site carries every vertical - Tori has no car section and neither Blocket nor DBA has a jobs section, and any source that cannot serve your choice is skipped with a free row telling you so.",
            "default": "marketplace"
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many billable rows across all sources together. The budget is split evenly between sources, so a small number still gives you every country rather than only the first one.",
            "default": 100
          },
          "maxPages": {
            "title": "Maximum pages per source",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How deep to walk each source. The sites cap their own result sets at 50 pages of roughly 50 ads, so 50 is the deepest any tool can go - narrow the search instead of raising this.",
            "default": 5
          },
          "sellerType": {
            "title": "Private or dealer",
            "enum": [
              "any",
              "private",
              "dealer"
            ],
            "type": "string",
            "description": "Keep only private sellers, only professional dealers, or both. Normalised across all four countries, so you do not have to know the local wording.",
            "default": "any"
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "In the ad's own currency - SEK on Blocket, NOK on FINN, DKK on DBA, EUR on Tori. Ads with no price at all are excluded when this is set."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "In the ad's own currency. Ads with no price at all are excluded when this is set."
          },
          "publishedWithinDays": {
            "title": "Published within (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only ads published or bumped in the last N days. Ideal for a daily run that should see only what is new."
          },
          "companyName": {
            "title": "Company name",
            "type": "string",
            "description": "Only for the company vertical: search the Norwegian and Finnish registers by name."
          },
          "municipality": {
            "title": "Municipality code",
            "type": "string",
            "description": "Norwegian kommunenummer (0301 is Oslo) or a Finnish city name. Narrows a register search to one area."
          },
          "industryCode": {
            "title": "Industry code",
            "type": "string",
            "description": "Norwegian næringskode or Finnish business-line code, e.g. 62.010 for computer programming."
          },
          "onlyActiveCompanies": {
            "title": "Skip bankrupt and liquidating companies",
            "type": "boolean",
            "description": "On by default, because a lead list should not contain companies that are winding up. Turn it off to study distress instead - both registers publish the flags.",
            "default": true
          },
          "monitorChangesOnly": {
            "title": "Only bill ads that changed",
            "type": "boolean",
            "description": "For scheduled runs. The Actor remembers what it saw last time and bills only the ads that are new or that actually moved; everything unchanged comes back as a free row. This is what makes an hourly cron affordable.",
            "default": false
          },
          "watchFields": {
            "title": "What counts as a change",
            "type": "array",
            "description": "Which fields make an ad 'changed' when monitoring. Price and title by default.",
            "items": {
              "type": "string",
              "enum": [
                "price",
                "title",
                "seller",
                "location",
                "images"
              ],
              "enumTitles": [
                "Price",
                "Title",
                "Seller",
                "Location",
                "Number of images"
              ]
            },
            "default": [
              "price",
              "title"
            ]
          },
          "maxCostUsd": {
            "title": "Maximum cost per run (USD)",
            "minimum": 0.01,
            "type": "number",
            "description": "A hard ceiling on what one run may spend, in USD. The run stops cleanly at the limit and says so in the free summary row. Accepts cents (0.25 is valid). Leave empty for no ceiling."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}