{
  "openapi": "3.0.1",
  "info": {
    "title": "Mascus Scraper — Global Heavy Equipment Marketplace",
    "description": "Scrape used machinery listings from Mascus, the world's largest marketplace for heavy equipment. Extract price, make, model, year, hours, location, dealer info, and specs across construction, agriculture, forestry, and material handling categories. Covers 50+ countries.",
    "version": "1.0",
    "x-build-id": "lWOSpn6cBtYXtd7fU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rastriq~mascus-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rastriq-mascus-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~mascus-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rastriq-mascus-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~mascus-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rastriq-mascus-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": {
          "data_freshness": {
            "title": "📡 Data source",
            "enum": [
              "preloaded",
              "live"
            ],
            "type": "string",
            "description": "Preloaded: returns the last monthly snapshot in seconds. Live: scrapes Mascus.com in real time.",
            "default": "preloaded"
          },
          "cat_construction": {
            "title": "🏗️ Construction — maquinaria de construcción",
            "type": "boolean",
            "description": "Excavadoras, grúas, compactadoras, hormigoneras... (~240K listings)",
            "default": true
          },
          "cat_agriculture": {
            "title": "🌾 Agriculture — maquinaria agrícola",
            "type": "boolean",
            "description": "Tractores, cosechadoras, remolques agrícolas... (~78K listings)",
            "default": true
          },
          "cat_forestry": {
            "title": "🌲 Forestry — maquinaria forestal",
            "type": "boolean",
            "description": "Harvesters, forwarders, astilladoras... (~25K listings)",
            "default": true
          },
          "cat_material_handling": {
            "title": "🏭 Material Handling — elevación y manutención",
            "type": "boolean",
            "description": "Carretillas elevadoras, transpaletas, plataformas... (~28K listings)",
            "default": true
          },
          "cat_groundcare": {
            "title": "🌿 Groundcare — jardinería y espacios verdes",
            "type": "boolean",
            "description": "Cortacésped, tractores de jardín, motoazadas... (~9K listings)",
            "default": true
          },
          "cat_transport": {
            "title": "🚛 Transport — camiones y vehículos",
            "type": "boolean",
            "description": "Camiones, furgonetas, semirremolques. Desactivado por defecto (fuera del scope habitual de Cyclica).",
            "default": false
          },
          "catalogs": {
            "title": "Catálogos personalizados (avanzado)",
            "type": "array",
            "description": "Opcional. REGLA DE PRECEDENCIA: si se rellena con al menos un slug, los checkboxes de arriba son ignorados. Slugs válidos: construction, agriculture, forestry, material-handling, groundcare, transport.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortOrder": {
            "title": "Orden de resultados",
            "enum": [
              "relevance",
              "newest",
              "priceasc",
              "pricedesc"
            ],
            "type": "string",
            "description": "Orden de clasificación en modo live. 'Más recientes primero' es útil para actualizaciones incrementales.",
            "default": "relevance"
          },
          "maxItems": {
            "title": "Máximo de resultados",
            "minimum": 0,
            "type": "integer",
            "description": "Número máximo de items a emitir. 0 = sin límite (extracción completa del catálogo o snapshot).",
            "default": 0
          },
          "maxPages": {
            "title": "Páginas máximas por subcategoría (modo live)",
            "minimum": 1,
            "maximum": 9999,
            "type": "integer",
            "description": "40 items por página. Usa 1-2 para tests rápidos, 9999 para extracción completa.",
            "default": 9999
          },
          "delaySeconds": {
            "title": "Pausa entre páginas (modo live)",
            "minimum": 0.5,
            "maximum": 10,
            "type": "number",
            "description": "Pausa base entre peticiones. Se añade un margen aleatorio de ±1s automáticamente.",
            "default": 2
          },
          "proxyConfiguration": {
            "title": "Configuración de proxy",
            "type": "object",
            "description": "Proxy de Apify recomendado. El actor rota IP automáticamente por subcategoría para evitar bloqueos."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}