{
  "openapi": "3.0.1",
  "info": {
    "title": "Marktplaats Scraper & New-Listing Monitor + 2dehands",
    "description": "For resellers, deal alerts and price trackers: Marktplaats.nl and 2dehands.be listings by search term, category or pasted URL with price, city, date, photos and attributes. Watch mode returns only listings created since your last check and price drops, never old ads bumped back to the top.",
    "version": "0.1",
    "x-build-id": "D8NxEIlHmeiCaKFR1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~marktplaats-listings-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-marktplaats-listings-monitor",
        "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/neverempty~marktplaats-listings-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-marktplaats-listings-monitor",
        "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/neverempty~marktplaats-listings-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-marktplaats-listings-monitor",
        "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": {
          "site": {
            "title": "Site",
            "enum": [
              "marktplaats",
              "2dehands"
            ],
            "type": "string",
            "description": "Which classifieds site to search: marktplaats.nl (Netherlands) or 2dehands.be (Belgium, same company and same page layout). Applies to search terms and categories; pasted search URLs use their own site.",
            "default": "marktplaats"
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "What to search for, one term per line (for example fiets, gazelle orange, iphone 13). Each term is searched in every category below. Leave empty to list whole categories instead; if everything is empty, the example term fiets is searched.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Category names as they appear in the site's address after /l/, one per line: auto-s for marktplaats.nl/l/auto-s/, or fietsen-en-brommers/fietsen-dames-damesfietsen for a subcategory. Leave empty to search all categories.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Search or category URLs",
            "type": "array",
            "description": "Or paste the address of a search or category page, such as https://www.marktplaats.nl/q/fiets/ or https://www.marktplaats.nl/l/auto-s/f/particulier/10898/ (filters that are part of the address are kept). Addresses with ? or # filters are refused, because the site applies those in your browser only.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerSearch": {
            "title": "Max listings per search",
            "minimum": 1,
            "maximum": 5010,
            "type": "integer",
            "description": "How many listings to return for each search, from 1 to 5010. The site shows 30 per page and at most 167 pages per search. In watch mode, the most rows one check returns per search.",
            "default": 30
          },
          "minPrice": {
            "title": "Min price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Return only listings priced at or above this many euros. Applied to the pages read. Listings without a shown price (bidding, see description) are left out when a price range is set. Empty means no minimum."
          },
          "maxPrice": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Return only listings priced at or below this many euros. Applied to the pages read. Empty means no maximum."
          },
          "includeAds": {
            "title": "Include Admarkt ads and the top block",
            "type": "boolean",
            "description": "The site mixes Admarkt ads (paid business ads, IDs starting with a) into each page and shows a top block above it. Off by default, so you get the listings only. Paid Dagtopper listings are always included and marked isPromoted.",
            "default": false
          },
          "onlyNew": {
            "title": "Watch mode: only new listings and price drops",
            "type": "boolean",
            "description": "Run the same search on a schedule. The first run returns the listings it reads and remembers them. Every later run returns only listings created since the watch started that you have not received yet, and listings whose price went down. A check that finds nothing is charged as one small search-checked event instead of rows.",
            "default": false
          },
          "includePriceDrops": {
            "title": "Watch mode: return price drops",
            "type": "boolean",
            "description": "In watch mode, also return listings you already received when their price went down, with the previous price and the difference. Price rises are remembered but not returned.",
            "default": true
          },
          "watchPages": {
            "title": "Watch mode: pages to read per check",
            "minimum": 1,
            "maximum": 34,
            "type": "integer",
            "description": "How many pages (30 listings each) a watch reads per search on each check, from 1 to 34. The site does not sort by date, so a new listing can sit on any page; use a narrow search (a category, more words) so these pages cover the whole list.",
            "default": 5
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Optional. A name for this watch (letters, digits, dot, dash, underscore). Two schedules with the same search but different names keep separate memories. Empty uses one shared default watch."
          },
          "resetMonitoringState": {
            "title": "Watch mode: forget what was seen",
            "type": "boolean",
            "description": "Start this watch over: the run is treated as the first check again. Off by default.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}