{
  "openapi": "3.0.1",
  "info": {
    "title": "MachineryZone Scraper — European Heavy Equipment",
    "description": "Scrape used equipment listings from MachineryZone.eu, a major European marketplace for construction, agriculture, and material handling machinery. Extract price, make, model, year, hours, dealer info, and specs. Compare prices across the European equipment market.",
    "version": "0.4",
    "x-build-id": "QSl94HXiGHvBm3G08"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rastriq~machineryzone-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rastriq-machineryzone-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/rastriq~machineryzone-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rastriq-machineryzone-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/rastriq~machineryzone-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rastriq-machineryzone-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": {
          "category": {
            "title": "🏗️ Equipment category (single, backward compat)",
            "enum": [
              "track-excavator",
              "wheel-excavator",
              "mini-digger",
              "industrial-excavator",
              "excavators-other",
              "backhoe",
              "walking-excavator",
              "dredging-equipment",
              "excavator-spare-parts",
              "rigid-backhoe-loader",
              "articulated-backhoe-loader",
              "mini-backhoe-loader",
              "wheel-loader",
              "skid-steer-loader",
              "crawler-loader",
              "skip-loader",
              "telescopic-forklift",
              "electric-forklift",
              "diesel-forklift",
              "propane-forklift",
              "all-terrain-masted-forklift",
              "heavy-forklift",
              "truck-forklift",
              "four-way-forklift",
              "gas-forklift",
              "pallet-stacker",
              "pallet-truck",
              "reach-truck",
              "order-picker",
              "sideloader",
              "reach-stacker",
              "container-handler",
              "dumpers",
              "articulated-dump-truck",
              "tracked-dumper",
              "mini-dumper",
              "dump-truck",
              "tipping-trailer",
              "bulldozer",
              "track-dozer",
              "wheel-dozer",
              "mobile-crane",
              "crawler-crane",
              "tower-crane",
              "self-erecting-crane",
              "auxiliary-cranes",
              "dockside-crane",
              "tandem-rollers",
              "single-drum-roller",
              "sheepsfoot-roller",
              "pneumatic-rollers",
              "combi-roller",
              "landfill-compactors",
              "asphalt-pavers",
              "asphalt-planers",
              "road-works-other",
              "motor-grader",
              "scrapers",
              "soil-stabiliser",
              "concrete-mixer",
              "concrete-pump",
              "concrete-other",
              "concrete-plant",
              "mixers",
              "screed-pump",
              "concrete-lorry",
              "crushing-screening",
              "crusher",
              "screen",
              "shredder",
              "trencher",
              "drilling-pile-driving",
              "pile-driving-machine",
              "self-propelled-platform",
              "platforms-other",
              "truck-mounted-platform",
              "trailer-platform",
              "generator",
              "compressor",
              "pumps",
              "pipelayer",
              "miscellaneous-equipment-other",
              "bucket",
              "hydraulic-hammer",
              "grapple",
              "grab-bucket",
              "shears",
              "spare-parts"
            ],
            "type": "string",
            "description": "Single category to scrape. Ignored if 'categories' is provided or 'scrapeAllCategories' is true.",
            "default": "track-excavator"
          },
          "categories": {
            "title": "🏗️ Equipment categories (multi-select)",
            "type": "array",
            "description": "Select multiple categories to scrape in a single run. Each category gets a fresh browser session. Overrides 'category' if provided.",
            "items": {
              "type": "string",
              "enum": [
                "track-excavator",
                "wheel-excavator",
                "mini-digger",
                "industrial-excavator",
                "excavators-other",
                "backhoe",
                "walking-excavator",
                "dredging-equipment",
                "excavator-spare-parts",
                "rigid-backhoe-loader",
                "articulated-backhoe-loader",
                "mini-backhoe-loader",
                "wheel-loader",
                "skid-steer-loader",
                "crawler-loader",
                "skip-loader",
                "telescopic-forklift",
                "electric-forklift",
                "diesel-forklift",
                "propane-forklift",
                "all-terrain-masted-forklift",
                "heavy-forklift",
                "truck-forklift",
                "four-way-forklift",
                "gas-forklift",
                "pallet-stacker",
                "pallet-truck",
                "reach-truck",
                "order-picker",
                "sideloader",
                "reach-stacker",
                "container-handler",
                "dumpers",
                "articulated-dump-truck",
                "tracked-dumper",
                "mini-dumper",
                "dump-truck",
                "tipping-trailer",
                "bulldozer",
                "track-dozer",
                "wheel-dozer",
                "mobile-crane",
                "crawler-crane",
                "tower-crane",
                "self-erecting-crane",
                "auxiliary-cranes",
                "dockside-crane",
                "tandem-rollers",
                "single-drum-roller",
                "sheepsfoot-roller",
                "pneumatic-rollers",
                "combi-roller",
                "landfill-compactors",
                "asphalt-pavers",
                "asphalt-planers",
                "road-works-other",
                "motor-grader",
                "scrapers",
                "soil-stabiliser",
                "concrete-mixer",
                "concrete-pump",
                "concrete-other",
                "concrete-plant",
                "mixers",
                "screed-pump",
                "concrete-lorry",
                "crushing-screening",
                "crusher",
                "screen",
                "shredder",
                "trencher",
                "drilling-pile-driving",
                "pile-driving-machine",
                "self-propelled-platform",
                "platforms-other",
                "truck-mounted-platform",
                "trailer-platform",
                "generator",
                "compressor",
                "pumps",
                "pipelayer",
                "miscellaneous-equipment-other",
                "bucket",
                "hydraulic-hammer",
                "grapple",
                "grab-bucket",
                "shears",
                "spare-parts"
              ],
              "enumTitles": [
                "Crawler Excavator",
                "Wheel Excavator",
                "Mini Excavator",
                "Industrial Excavator",
                "Excavators (Other)",
                "Backhoe",
                "Walking Excavator",
                "Dredging Equipment",
                "Excavator Spare Parts",
                "Rigid Backhoe Loader",
                "Articulated Backhoe Loader",
                "Mini Backhoe Loader",
                "Wheel Loader",
                "Skid Steer Loader",
                "Crawler Loader",
                "Skip Loader",
                "Telescopic Forklift / Telehandler",
                "Electric Forklift",
                "Diesel Forklift",
                "Propane Forklift",
                "All-Terrain Masted Forklift",
                "Heavy Forklift",
                "Truck-Mounted Forklift",
                "Four-Way Forklift",
                "Gas Forklift",
                "Pallet Stacker",
                "Pallet Truck",
                "Reach Truck",
                "Order Picker",
                "Sideloader",
                "Reach Stacker",
                "Container Handler",
                "Dumpers (all)",
                "Articulated Dump Truck",
                "Tracked Dumper",
                "Mini Dumper",
                "Rigid Dump Truck",
                "Tipping Trailer",
                "Bulldozer",
                "Track Dozer",
                "Wheel Dozer",
                "Mobile Crane",
                "Crawler Crane",
                "Tower Crane",
                "Self-Erecting Crane",
                "Auxiliary Crane",
                "Dockside Crane",
                "Tandem Roller",
                "Single-Drum Roller",
                "Sheepsfoot Roller",
                "Pneumatic Roller",
                "Combi Roller",
                "Landfill Compactor",
                "Asphalt Paver",
                "Asphalt Planer",
                "Road Works (Other)",
                "Motor Grader",
                "Scraper",
                "Soil Stabilizer",
                "Concrete Mixer",
                "Concrete Pump",
                "Concrete Equipment (Other)",
                "Concrete Plant",
                "Truck Mixer",
                "Screed Pump",
                "Concrete Lorry",
                "Crushing & Screening",
                "Crusher",
                "Screen",
                "Shredder",
                "Trencher",
                "Drilling / Pile Driving",
                "Piling Rig",
                "Self-Propelled Aerial Platform",
                "Aerial Platforms (Other)",
                "Truck-Mounted Platform",
                "Trailer-Mounted Platform",
                "Generator",
                "Compressor",
                "Pump",
                "Pipelayer",
                "Miscellaneous Equipment",
                "Bucket",
                "Hydraulic Hammer",
                "Grapple",
                "Grab Bucket",
                "Demolition Shears",
                "Spare Parts (all)"
              ]
            }
          },
          "scrapeAllCategories": {
            "title": "🌐 Scrape ALL categories",
            "type": "boolean",
            "description": "When true, iterates over ALL available categories (ignores 'category' and 'categories'). Each category gets a fresh browser session with rotated proxy.",
            "default": false
          },
          "maxItems": {
            "title": "💯 Max results",
            "minimum": 1,
            "maximum": 500000,
            "type": "integer",
            "description": "Maximum number of listings to collect per category. Applies to <b>live</b> mode only — in preloaded mode, all snapshot items are returned.",
            "default": 100
          },
          "maxPages": {
            "title": "📄 Max pages",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Number of result pages to go through per category.",
            "default": 5
          },
          "maxSessions": {
            "title": "Max sessions (IP retries)",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Reintentos con IP fresca si DataDome quema la sesion (per category).",
            "default": 8
          },
          "pagesPerSession": {
            "title": "Pages per IP (preventive rotation)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Paginas por IP antes de rotar preventivamente (antes del rate-limit ~p9). 0 = sesion unica larga.",
            "default": 7
          },
          "maxBurned": {
            "title": "Max burned IPs",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "IPs quemadas seguidas antes de abortar (per category).",
            "default": 4
          },
          "resolveAttempts": {
            "title": "DataDome resolve attempts",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Intentos de auto-resolve (x5s) antes de rotar.",
            "default": 4
          },
          "outputSchema": {
            "title": "Output schema",
            "enum": [
              "ftp28",
              "english"
            ],
            "type": "string",
            "description": "Select output format. FTP-28 produces 31 standardized Spanish field names for pipeline integration. English produces descriptive English field names."
          },
          "data_freshness": {
            "title": "Data freshness",
            "enum": [
              "preloaded",
              "live"
            ],
            "type": "string",
            "description": "Choose 'preloaded' for instant results from the latest monthly snapshot (63K+ listings), or 'live' to scrape the website in real time.",
            "default": "preloaded"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "List of portal URLs to scrape directly (search/listing pages). When provided, category filters are ignored. Only works in Live mode. Valid domains: www.machineryzone.eu.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "fetchDetails": {
            "title": "BETA — visitar la ficha de detalle",
            "type": "boolean",
            "description": "Beta. Visita la ficha de cada anuncio y completa los campos que el listado no trae: telefono (100% de las fichas medidas), anio (92%), tiempo_uso (64%), peso (56%). No pisa lo que ya venga del listado. Multiplica por ~40 las peticiones y la exposicion a DataDome. Limitado por detailSampleSize.",
            "default": false
          },
          "detailSampleSize": {
            "title": "BETA — fichas por ejecucion",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Tope duro de fichas que se visitan cuando fetchDetails esta activo. Evita que una prueba se convierta en un barrido completo.",
            "default": 25
          },
          "detailRaw": {
            "title": "BETA — devolver la ficha en bruto",
            "type": "boolean",
            "description": "Solo para sondear. Anade ext_beta_ficha con el JSON-LD y todos los pares etiqueta/valor sin mapear. Con fetchDetails activo y esto apagado, los campos de la ficha se vuelcan directamente en los campos canonicos FTP-28.",
            "default": false
          },
          "enrichFromPros": {
            "title": "🏢 Enriquecer desde directorio de profesionales",
            "type": "boolean",
            "description": "Scrape el directorio /pros/list/ (~18 páginas, ~868 vendedores) antes del scraping de categorías. Rellena campos vacíos: compania y ubicacion. Coste: ~18 peticiones extra.",
            "default": false
          },
          "enrichPhones": {
            "title": "📞 Extraer teléfonos de vendedores",
            "type": "boolean",
            "description": "Visita la ficha de cada vendedor del directorio para extraer teléfono y dirección completa. Requiere enrichFromPros=true. Coste: ~868 peticiones extra (una por vendedor).",
            "default": false
          },
          "_admin_snapshot": {
            "title": "[interno] Snapshot de autor",
            "type": "boolean",
            "description": "Escribe al Named Dataset del autor en vez del dataset del run, sin PPE. Uso interno del ciclo mensual.",
            "default": false
          },
          "_snapshot_dataset_name": {
            "title": "[interno] Dataset de prueba",
            "type": "string",
            "description": "Dirige un run de admin a un dataset desechable y NO publica el puntero. Permite probar la ruta de snapshot sin mover lo que ve el cliente."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}