{
  "openapi": "3.0.1",
  "info": {
    "title": "Marktplaats Scraper: Dutch & Belgian Classifieds",
    "description": "Scrape Marktplaats.nl, 2dehands.be and 2ememain.be ads by keyword or category: title, price and price type, condition, delivery, city and coordinates, seller name, images and attributes. Filter by price, seller type, promoted and reserved. Unofficial.",
    "version": "0.1",
    "x-build-id": "B72lL82wFH9PAhmAz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/reventadata~marktplaats-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-reventadata-marktplaats-scraper",
        "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/reventadata~marktplaats-scraper/runs": {
      "post": {
        "operationId": "runs-sync-reventadata-marktplaats-scraper",
        "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/reventadata~marktplaats-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-reventadata-marktplaats-scraper",
        "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": {
          "country": {
            "title": "Site",
            "enum": [
              "nl",
              "be-nl",
              "be-fr"
            ],
            "type": "string",
            "description": "Which site to search. nl = marktplaats.nl (Netherlands). be-nl = 2dehands.be (Belgium, Dutch). be-fr = 2ememain.be (Belgium, French). The two Belgian sites show the same ads in two languages, so choose by the language you want for fields such as condition and delivery.",
            "default": "nl"
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "One search per term, across every category of the chosen site. Optional when you give a category path instead. Several words are searched together.",
            "items": {
              "type": "string"
            }
          },
          "categoryPaths": {
            "title": "Category paths",
            "type": "array",
            "description": "Optional. Lists a whole category, one entry per category: the part of a category page address between /l/ and the end, for example telecommunicatie/mobiele-telefoons-apple-iphone from marktplaats.nl/l/telecommunicatie/mobiele-telefoons-apple-iphone/. A pasted full address works too. Category slugs are language-specific: on be-fr (2ememain.be) they are French, for example telecoms/telephonie-mobile-apple-iphone from 2ememain.be/l/telecoms/telephonie-mobile-apple-iphone/, and the Dutch slug of the same category returns a 404 there. Category ids are shared across the three sites, the slugs are not, so copy the path from the site you search. A category and a search term are not combined; each entry is its own search.",
            "items": {
              "type": "string"
            }
          },
          "sellers": {
            "title": "Seller kind",
            "enum": [
              "any",
              "private",
              "business"
            ],
            "type": "string",
            "description": "The sites do not label private and business sellers. This is inferred: a listing that carries the site's business-profile markers counts as business, every other listing as private. Applied after fetching.",
            "default": "any"
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "number",
            "description": "Optional, inclusive. Applied after fetching, because the sites' own price filter is not offered on the pages this Actor is allowed to fetch. Listings without an amount (bidding, see description) are dropped whenever a bound is set. Some prices are a starting bid (priceType MIN_BID)."
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "number",
            "description": "Optional, inclusive. Applied after fetching, like the minimum."
          },
          "excludePromoted": {
            "title": "Exclude promoted listings",
            "type": "boolean",
            "description": "Drops the paid top-of-the-day listings that repeat across result pages. Off by default; they are returned once and flagged isPromoted. Sponsored placements above the results are always left out.",
            "default": false
          },
          "excludeReserved": {
            "title": "Exclude reserved listings",
            "type": "boolean",
            "description": "Drops listings the seller has marked as reserved for a buyer.",
            "default": false
          },
          "requireKeywordMatch": {
            "title": "Require the query in title or text",
            "type": "boolean",
            "description": "Drops listings where a word of the search term is missing from both the title and the short text snippet (about 200 characters). The sites also search the full text, so a search for a phone can return cases and accessories. Ignored for category paths. Off by default.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum rows",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on rows pushed across all searches.",
            "default": 100
          },
          "maxPages": {
            "title": "Maximum pages per search",
            "minimum": 1,
            "maximum": 167,
            "type": "integer",
            "description": "30 listings a page. The sites stop serving results after a certain page (167 at most, and sometimes fewer); the run ends on the first empty page.",
            "default": 167
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Left off by default; only turn it on if you see request failures.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}