{
  "openapi": "3.0.1",
  "info": {
    "title": "Mercado Livre Scraper - Brazil Prices, Sales & Sellers",
    "description": "Get Mercado Livre Brazil prices, units sold and sellers by search term, category or product link. Price, Pix price, installments, free shipping, Full, rating, sponsored flag and position. Optional product page with seller reputation, stock and specs. Only-new and price-drop tracking for schedules.",
    "version": "0.1",
    "x-build-id": "hASJGDFYc9R1dIrWT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~mercadolivre-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-mercadolivre-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/scrapewise~mercadolivre-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-mercadolivre-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/scrapewise~mercadolivre-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-mercadolivre-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Words to search on Mercado Livre Brazil, one per line, as you would type them on the site (for example air fryer, iphone 15, tenis nike). Portuguese product names give the best matches. Each term is one search with its own limit, and every row keeps the term and its position in the results. Leave empty to use only the URLs below; with both empty the run searches 'air fryer' as an example. Also accepts 'keywords', 'queries' or 'query'.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Mercado Livre URLs",
            "type": "array",
            "description": "Search or category URLs from lista.mercadolivre.com.br, one per line, copied after setting any filter on the site (for example https://lista.mercadolivre.com.br/air-fryer_ITEM*CONDITION_2230284_NoIndex_True). Every filter in the URL is kept and the Actor follows the site's own next-page links. Product URLs (/p/MLB... or produto.mercadolivre.com.br/MLB-...) also work and come back with the full product page, charged as a product plus a full page. Also accepts 'searchUrls', 'productUrls' or 'urls'.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "priceLowToHigh",
              "priceHighToLow"
            ],
            "type": "string",
            "description": "Order of the results for search terms: Relevance (default, Mercado Livre's own ranking), Price low to high or Price high to low. The position is saved on every row, so Relevance also works as a ranking tracker for your products. URLs keep the order already in the URL.",
            "default": "relevance"
          },
          "minPrice": {
            "title": "Minimum price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Only products priced at or above this value, in whole Brazilian reais (for example 200). Uses Mercado Livre's own price filter, so it applies to search terms only. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Maximum price (BRL)",
            "minimum": 0,
            "type": "integer",
            "description": "Only products priced at or below this value, in whole Brazilian reais (for example 800). Uses Mercado Livre's own price filter on search terms only. Must be higher than the minimum price. Leave empty for no maximum."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "used"
            ],
            "type": "string",
            "description": "Any (default), New or Used, with Mercado Livre's own condition filter. Applies to search terms only; for URLs set the filter on the site before copying the link.",
            "default": "any"
          },
          "skipSponsored": {
            "title": "Skip sponsored results",
            "type": "boolean",
            "description": "Leaves out the paid ads (sponsored listings) that Mercado Livre mixes into the results, so positions and prices reflect organic results only. Skipped rows are not delivered and not charged. Off by default; every row has an isSponsored flag either way.",
            "default": false
          },
          "onlyFulfillment": {
            "title": "Only Mercado Livre Full",
            "type": "boolean",
            "description": "Keeps only products shipped by Mercado Livre's own fulfillment (Full), the fast-delivery listings. Other products are skipped and not charged. Off by default.",
            "default": false
          },
          "maxItems": {
            "title": "Max products per search",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each search (each term or URL) after this many products (default 50). Mercado Livre shows 48 products per page and at most 2,000 per search; 0 means up to 2,000. With 3 terms and 50 here a run delivers up to 150 products, each charged once. Also accepts 'maxItemsPerSearch', 'maxResults' or 'limit'.",
            "default": 50
          },
          "includeDetails": {
            "title": "Full product pages",
            "type": "boolean",
            "description": "Also opens each product's own page and adds the seller name, ID, reputation and number of sales, stock, review count, units sold, installments, category path, description and the full specifications table. Off by default. When on, each product is charged a second 'Full product page' event and the run is slower, so use it on smaller searches.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new products since the last run",
            "type": "boolean",
            "description": "For scheduled runs: remembers which products each search already returned, in a named key-value store in your account ('mercadolivre-scraper-state'), and delivers only products not seen before. The first run delivers up to the limit and marks everything it read as seen. Seen products are not delivered and not charged. Delete the store to start over. Also accepts 'onlyNewProducts'.",
            "default": false
          },
          "trackPriceChanges": {
            "title": "Track price changes",
            "type": "boolean",
            "description": "Compares each product's price with the price seen in your previous runs of the same search and adds previousPrice, priceChange, priceChangePct, isPriceDrop, isNewProduct, firstSeenAt and previousSeenAt. The first run only records prices. With 'Only new products' on too, products whose price changed are delivered as well as new ones. Also accepts 'compareWithPreviousRun'.",
            "default": false
          },
          "onlyPriceDrops": {
            "title": "Only price drops (not increases)",
            "type": "boolean",
            "description": "Needs 'Only new products' and 'Track price changes' both on (otherwise the run stops with a free INVALID_INPUT row). Of the products seen before, delivers only those whose price went down, plus new products. Price increases are skipped and not charged.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Mercado Livre refuses datacenter IPs and asks for a security check. The default is the Apify RESIDENTIAL group with Brazilian IPs (country BR): the Actor passes the check once per session in a real browser, then reads pages with plain HTTP on the same IP. Keep this default; with another group, rows may come back BLOCKED.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "BR"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}