{
  "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": "0.8",
    "x-build-id": "6s9ZazLrY3mkTDNHn"
  },
  "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": {
          "maxResults": {
            "title": "Maximum results (recommended for testing)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops the actor after pushing N listings to the dataset, regardless of how many subcategories or pages remain. Use 50 for a quick first test (~1 min). Leave at 0 (or empty) to extract everything without limit.",
            "default": 0
          },
          "cat_construction": {
            "title": "Construction — heavy construction equipment",
            "type": "boolean",
            "description": "Excavators, cranes, compactors, concrete mixers, and more (~240K listings).",
            "default": true
          },
          "cat_agriculture": {
            "title": "Agriculture — farming equipment",
            "type": "boolean",
            "description": "Tractors, harvesters, agricultural trailers, and more (~78K listings).",
            "default": true
          },
          "cat_forestry": {
            "title": "Forestry — forestry machinery",
            "type": "boolean",
            "description": "Harvesters, forwarders, chippers, and more (~25K listings).",
            "default": true
          },
          "cat_material_handling": {
            "title": "Material Handling — lifting and warehousing",
            "type": "boolean",
            "description": "Forklifts, pallet trucks, aerial platforms, and more (~28K listings).",
            "default": true
          },
          "cat_groundcare": {
            "title": "Groundcare — landscaping and green spaces",
            "type": "boolean",
            "description": "Lawnmowers, garden tractors, tillers, and more (~9K listings).",
            "default": true
          },
          "cat_transport": {
            "title": "Transport — trucks and vehicles",
            "type": "boolean",
            "description": "Trucks, vans, and semi-trailers. Disabled by default.",
            "default": false
          },
          "catalogs": {
            "title": "Custom catalogs (advanced)",
            "type": "array",
            "description": "Optional. PRECEDENCE RULE: if filled, the category checkboxes above are ignored. Valid slugs: construction, agriculture, forestry, material-handling, groundcare, transport.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortOrder": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "newest",
              "priceasc",
              "pricedesc"
            ],
            "type": "string",
            "description": "Sort order for the results.",
            "default": "relevance"
          },
          "brands": {
            "title": "Filter by brand (optional)",
            "type": "array",
            "description": "Optional. List of brands to filter by. Accepts names in any format — the actor converts them to Mascus slugs (lowercase, spaces to underscore). Examples: Fendt, John Deere, Deutz-Fahr, Komatsu, CAT. Leave empty to extract all brands.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "lastCreatedDays": {
            "title": "Listings from the last N days (optional)",
            "minimum": 1,
            "maximum": 9999,
            "type": "integer",
            "description": "Optional. Only extract listings published in the last N days. Example: 30 = last month, 7 = last week. Leave empty to extract all listings."
          },
          "continents": {
            "title": "Filter by continent (optional)",
            "type": "array",
            "description": "Optional. Continent to filter by. NOTE: Mascus only accepts one continent at a time; if you enter multiple, only the first is used. Valid values: Europe (150), Americas (019), Asia (142), Oceania (009), Africa (002). UN M49 codes are also accepted.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "forceRestart": {
            "title": "Force restart from scratch",
            "type": "boolean",
            "description": "If enabled, deletes the checkpoint from the previous run and starts from the beginning. Use this if you change catalogs or filters between sessions.",
            "default": false
          },
          "maxPages": {
            "title": "Max pages per subcategory",
            "minimum": 1,
            "maximum": 9999,
            "type": "integer",
            "description": "40 items per page. Use 1–2 for quick tests, 9999 for full extraction.",
            "default": 9999
          },
          "delaySeconds": {
            "title": "Delay between pages (seconds)",
            "minimum": 0.5,
            "maximum": 10,
            "type": "number",
            "description": "Base delay between requests. A random jitter of up to 1 second is added automatically.",
            "default": 2
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy recommended. The actor automatically rotates IPs per subcategory to prevent blocks."
          },
          "maxConcurrent": {
            "title": "Parallel subcategories",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Number of subcategories crawled simultaneously. Higher = faster but more memory. Recommended: 3–5.",
            "default": 3
          },
          "outputSchema": {
            "title": "Output schema",
            "enum": [
              "english",
              "ftp28"
            ],
            "type": "string",
            "description": "Select 'ftp28' to output canonical Spanish field names required for FTP-28 pipeline integration.",
            "default": "english"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}