{
  "openapi": "3.0.1",
  "info": {
    "title": "Wallapop Scraper: Deal Alerts, New Listings & Price Drops",
    "description": "Get alerted to new Wallapop listings and price drops, and spot the ones priced under the search median. Works for any search in Spain, Italy, Portugal and France. Also scrapes full listing data with seller info and phone numbers.",
    "version": "1.0",
    "x-build-id": "xNhASG7ihmWunUjdw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fayoussef~wallapop-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fayoussef-wallapop-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/fayoussef~wallapop-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fayoussef-wallapop-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/fayoussef~wallapop-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fayoussef-wallapop-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",
        "required": [
          "start_urls"
        ],
        "properties": {
          "start_urls": {
            "title": "Start URLs",
            "type": "array",
            "description": "One or more Wallapop search or item detail URLs. Supports es/fr/it/de/pt/en subdomains. Only wallapop.com URLs are accepted: anything else is rejected straight away with a 'Wrong domain' error.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "max_items": {
            "title": "Max Items",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after pushing this many items to the dataset (across all URLs and pages). ⚠️ Free-plan users are capped at 5 items per run regardless of this value. Upgrade to an [Apify plan](https://apify.com/pricing?fpr=youssef) to raise the limit."
          },
          "country": {
            "title": "Default Country",
            "enum": [
              "Spain",
              "United Kingdom",
              "France",
              "Italy",
              "Portugal",
              "Germany"
            ],
            "type": "string",
            "description": "Used to set a default latitude/longitude when the search URL does not already contain coordinates. Each country maps to its capital or most relevant city (Spain→Madrid, France→Paris, Italy→Rome, Portugal→Lisbon, United Kingdom→London, Germany→Berlin). Ignored when 'Latitude' and 'Longitude' are both provided.",
            "default": "Spain"
          },
          "latitude": {
            "title": "Latitude (optional override)",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "Custom latitude for the search centre. When set together with Longitude, overrides the country default. Useful for targeting a specific city or region regardless of the country selector."
          },
          "longitude": {
            "title": "Longitude (optional override)",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "Custom longitude for the search centre. Must be set together with Latitude."
          },
          "monitor_mode": {
            "title": "Monitor mode",
            "type": "boolean",
            "description": "Return only new listings and price drops compared with the previous run of the same watchlist. The search is read newest first. Off by default, so existing saved inputs keep scraping everything. Needs a paid plan.",
            "default": false
          },
          "watchlist_name": {
            "title": "Watchlist name",
            "type": "string",
            "description": "Names the saved snapshot. Leave empty and it is derived from your search URLs, so a schedule needs no naming. Use a different name to keep a second, separate watchlist for the same search."
          },
          "monitor_max_pages": {
            "title": "Newest pages to check",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "How many pages of the newest listings to read on each run, 40 listings per page. Raise it for a search that gets more new listings between runs than one run covers. Default 5.",
            "default": 5
          },
          "min_price_drop_percent": {
            "title": "Ignore price drops smaller than (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "A price drop smaller than this percentage is not reported. Small drops are remembered, so several of them add up to one reportable drop. Default 5.",
            "default": 5
          },
          "min_below_market_percent": {
            "title": "Only new listings priced this far under the search median (%)",
            "minimum": 0,
            "maximum": 90,
            "type": "integer",
            "description": "Deal filter for new listings. 0 reports every new listing. Set 20 and only new listings priced at least 20% below the median price of the search are reported, with `below_market_percent` on each row. Price drops are not filtered by this.",
            "default": 0
          },
          "alertWebhookUrl": {
            "title": "Alert webhook URL",
            "type": "string",
            "description": "A Discord, Slack or generic https webhook URL (Make, Zapier, n8n). One message per run, only when something changed. Kept secret. Do not put it in a public task."
          },
          "alertTelegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Optional. Create a bot with @BotFather on Telegram and paste its token here. Kept secret."
          },
          "alertTelegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Optional. The chat the bot should message: your own chat ID, or a group or channel the bot was added to."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}