{
  "openapi": "3.0.1",
  "info": {
    "title": "Mundimotos Scraper: Motorcycle Parts Catalog Colombia",
    "description": "Scrape mundimotos.com, the Colombian motorcycle parts store: about 33,000 parts, tyres, oils and accessories with part numbers, brands, prices in COP, stock and fitments by make and model, plus branches and blog articles. Export to JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "Mv9BusPtaFcQMThqm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~mundimotos-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-mundimotos-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/recordsdata~mundimotos-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-mundimotos-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/recordsdata~mundimotos-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-mundimotos-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": {
          "recordTypes": {
            "title": "What to collect",
            "type": "array",
            "description": "Parts (spare parts, tyres, oils and accessories, one row per product), fitments (one row per part and motorcycle model it is listed for), catalog categories (collections with their product count), branches (the 26 official stores) and blog articles. Several choices are read in the order listed here.",
            "items": {
              "type": "string",
              "enum": [
                "parts",
                "fitments",
                "categories",
                "branches",
                "articles"
              ],
              "enumTitles": [
                "Parts, tyres, oils and accessories (about 33,000 products)",
                "Part and motorcycle model fitments (one row per part and model)",
                "Catalog categories and collections (about 475 with products)",
                "Branches (official stores with address and hours)",
                "Blog articles (guides and tips)"
              ]
            },
            "default": [
              "parts"
            ]
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows (all record types together). Free plans are limited to 10 items per run.",
            "default": 10
          },
          "searchQueries": {
            "title": "Search text",
            "type": "array",
            "description": "Optional. Words to look for, for example llanta 100/90-17, pastillas de freno or aceite 20w50. Every word of one text must appear (any order, accents and case ignored; numbers match as whole numbers) in the name, brand, type, tags, SKU or description; a row passes when any of the texts matches. For categories, branches and articles the text filters by name, city, address or article text.",
            "items": {
              "type": "string"
            }
          },
          "partNumbers": {
            "title": "Part numbers (SKU or barcode)",
            "type": "array",
            "description": "Optional. Exact part numbers, SKUs or barcodes, for example Y5XP-W0045-00. Each one is looked up in the store search and kept only when the product really carries that code; a code without a product returns a free error row.",
            "items": {
              "type": "string"
            }
          },
          "collections": {
            "title": "Collections",
            "type": "array",
            "description": "Optional. Collection names, handles or addresses from mundimotos.com, for example Sistema de frenos, bws-125 or https://mundimotos.com/collections/yamaha-repuestos. Only products of these collections are returned.",
            "items": {
              "type": "string"
            }
          },
          "vehicleMake": {
            "title": "Motorcycle make",
            "type": "string",
            "description": "Optional. Only parts listed for this make by the store's own finder, for example Yamaha, Honda, Suzuki, AKT, Bajaj, Hero, TVS, Kawasaki. An unknown make returns a free error row that lists the valid ones.",
            "default": ""
          },
          "vehicleModel": {
            "title": "Motorcycle model",
            "type": "string",
            "description": "Optional. Only parts listed for this model, for example BWS 125, Pulsar NS 200 or CB 190R. Best together with the make. An unknown model returns a free error row that lists the models of the make.",
            "default": ""
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Optional. Brand names as the store lists them (the product vendor), for example Yamaha, Honda, Michelin, Motul, Kontrol.",
            "items": {
              "type": "string"
            }
          },
          "productTypes": {
            "title": "Product types",
            "type": "array",
            "description": "Optional. Words of the product type the store assigns, for example Pastillas de freno, Llanta, Aceite, Kit de arrastre. A product passes when its type contains the word.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price (COP)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Lowest price in Colombian pesos."
          },
          "maxPrice": {
            "title": "Maximum price (COP)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Highest price in Colombian pesos."
          },
          "inStockOnly": {
            "title": "In stock only",
            "type": "boolean",
            "description": "Skips products the store shows as sold out.",
            "default": false
          },
          "startUrls": {
            "title": "Addresses or handles",
            "type": "array",
            "description": "Optional. Product pages (mundimotos.com/products/...), collection pages, search pages (mundimotos.com/search?q=...), blog articles, a blog or the branches page. A bare product handle works too. When set, only these are read; every filter above still applies to the rows.",
            "items": {
              "type": "string"
            }
          },
          "includeDescription": {
            "title": "Include the product description",
            "type": "boolean",
            "description": "Adds the product description as plain text. Turn it off for smaller rows.",
            "default": true
          },
          "includeArticleText": {
            "title": "Include the article text",
            "type": "boolean",
            "description": "Adds the full text of each blog article (up to 20,000 characters). Turn it off to get titles, dates and summaries only.",
            "default": true
          },
          "fetchDetails": {
            "title": "Fetch barcode details (slower)",
            "type": "boolean",
            "description": "Opens each product once more to add the barcode. The store limits these requests, so each product costs about 1.5 seconds extra.",
            "default": false
          },
          "includeContactDetails": {
            "title": "Include branch WhatsApp numbers",
            "type": "boolean",
            "description": "Adds the business WhatsApp number and link the store publishes for each branch. Off by default; use them in line with the data protection rules that apply to you.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new items (monitor)",
            "type": "boolean",
            "description": "Skips every item seen in an earlier run with the same filters and monitor name, so scheduled runs return only what is new and you pay only for those.",
            "default": false
          },
          "trackPriceChanges": {
            "title": "Also return price and stock changes",
            "type": "boolean",
            "description": "With only new items on, an item already seen comes back when its price or stock changed, with the previous price, the change and a price-drop, price-increase, out-of-stock or back-in-stock label.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the memory used by only new items. Use one name per saved search. Empty derives a name from your filters.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget what was seen",
            "type": "boolean",
            "description": "Clears the memory of this monitor before the run, so everything counts as new again.",
            "default": false
          },
          "concurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many catalog pages are read at the same time. The default is safe; the store paces slower pages on its own.",
            "default": 3
          },
          "maxScanSeconds": {
            "title": "Maximum scan time (seconds)",
            "minimum": 30,
            "maximum": 3300,
            "type": "integer",
            "description": "Stops reading the catalog after this time and keeps the rows found so far. A text that matches nothing needs a full read of the catalog, about 8 minutes. Raise this value to export the whole catalog in one run.",
            "default": 1800
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Empty means direct requests, which work. Add a proxy only if your own network needs one."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}