{
  "openapi": "3.0.1",
  "info": {
    "title": "Tiendanube / Nuvemshop Product & Store Scraper",
    "description": "Scrape Tiendanube (Nuvemshop in Brazil) stores: products, prices, variants, stock, installments, images and categories, plus public store contacts. Incremental mode returns only new or changed products. Spanish and Portuguese keywords work.",
    "version": "0.1",
    "x-build-id": "HXjnNCIYYenm0QQGW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lautarodelgado~tiendanube-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lautarodelgado-tiendanube-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/lautarodelgado~tiendanube-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lautarodelgado-tiendanube-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/lautarodelgado~tiendanube-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lautarodelgado-tiendanube-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",
        "required": [
          "stores"
        ],
        "properties": {
          "mode": {
            "title": "What to extract",
            "enum": [
              "catalog",
              "storeProfile"
            ],
            "type": "string",
            "description": "Product catalog: one row per product with prices, variants, stock, images and categories. Store profile: one row per store with its country, currency, public e-mail / phone / WhatsApp / social links and product count.",
            "default": "catalog"
          },
          "stores": {
            "title": "Stores",
            "type": "array",
            "description": "Store URLs or domains: a Tiendanube/Nuvemshop address (name.mitiendanube.com, name.lojavirtualnuvem.com.br) or the store's own domain (shop.example.com). You can also paste a category URL (only that category is read) or a single product URL.",
            "items": {
              "type": "string"
            }
          },
          "maxProductsPerStore": {
            "title": "Max products per store",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Catalog mode only. The Actor looks at this many products per store, most recently changed first. Products that are skipped (out of stock filter, keywords, unchanged in incremental mode) still count toward this limit but are not charged.",
            "default": 100
          },
          "onlyInStock": {
            "title": "Only products in stock",
            "type": "boolean",
            "description": "Catalog mode only. Skip products with no available variant.",
            "default": false
          },
          "keywords": {
            "title": "Keywords (optional)",
            "type": "array",
            "description": "Catalog mode only. Keep only products whose name, brand, categories, tags or URL contain at least one of these words (Spanish or Portuguese work). Leave empty to keep everything.",
            "items": {
              "type": "string"
            }
          },
          "since": {
            "title": "Only changed since (optional)",
            "type": "string",
            "description": "Catalog mode only. A date (2026-10-01) or a period (\"7 days\", \"12 hours\", \"2 weeks\"). Products whose store sitemap says they were last modified before that are not opened at all, which saves time. Products without a modification date are always checked."
          },
          "incrementalStoreName": {
            "title": "Incremental mode: snapshot name (optional)",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,62}$",
            "type": "string",
            "description": "Catalog mode only. Set a name (letters, numbers, dashes) to remember what each store looked like last run. Scheduled runs then return only NEW or CHANGED products (price, compare-at price, stock, availability) and you are not charged for unchanged ones. Use the same name on every run of the same watchlist."
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Catalog mode only. Add the product description with its HTML formatting (the plain-text description is always included).",
            "default": false
          },
          "requestsPerSecond": {
            "title": "Requests per second",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Starting speed for all requests together. Tiendanube / Nuvemshop rate-limit each IP address for a few seconds above roughly 4 uncached pages per second, so the default is conservative; the Actor slows down by itself after a rate-limit answer and speeds up again while all goes well. With a proxy you can set a higher value.",
            "default": 3
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Total requests in flight at the same time across all stores (the speed itself is set by Requests per second).",
            "default": 8
          },
          "maxConcurrencyPerStore": {
            "title": "Max parallel requests per store",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel requests to the same store.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Not needed in normal use: Tiendanube / Nuvemshop storefronts answer plain requests. Add a proxy only if a store blocks your runs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}