{
  "openapi": "3.0.1",
  "info": {
    "title": "Thrive Market Scraper - Grocery Price, Stock & Rank Data",
    "description": "Thrive Market scraper and grocery price API. Extract member vs compare-at price, autoship price, bestseller rank, per-warehouse stock, ratings, reviews, diet and certification claims, nutrition and promos. 74 data fields per product plus a daily price and stock change feed.",
    "version": "0.0",
    "x-build-id": "YGKmEye88DNIya9qO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/growth-installations~thrive-market-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-growth-installations-thrive-market-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/growth-installations~thrive-market-scraper/runs": {
      "post": {
        "operationId": "runs-sync-growth-installations-thrive-market-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/growth-installations~thrive-market-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-growth-installations-thrive-market-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": [
          "crawlMode"
        ],
        "properties": {
          "crawlMode": {
            "title": "What to scrape",
            "enum": [
              "fullCatalog",
              "productUrls"
            ],
            "type": "string",
            "description": "Full catalog enumerates every product from thrivemarket.com/sitemap.xml (~8,500 products) and applies your filters. Specific product URLs is for targeted price/stock monitoring of a known watchlist.",
            "default": "fullCatalog"
          },
          "productUrls": {
            "title": "Product URLs",
            "type": "array",
            "description": "Thrive Market product detail page URLs, e.g. https://thrivemarket.com/p/thrive-market-organic-apple-sauce-pouches. Used when crawl mode is 'Specific product URLs only'.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchTerms": {
            "title": "Search terms (optional)",
            "type": "array",
            "description": "Narrow a full-catalog run to products whose name matches any of these keywords, e.g. \"olive oil\", \"collagen\". Matching is done on the sitemap slug, so no disallowed search URLs are requested. Leave empty to scrape everything.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many products have been saved. Set to 0 for no limit (the full Thrive Market catalog is roughly 8,500 products). The default of 10 keeps your first run fast and cheap.",
            "default": 10
          },
          "categoryUrlKeys": {
            "title": "Category filter",
            "type": "array",
            "description": "Keep only products belonging to these category slugs, e.g. healthy-snacks, coffee, vitamins-supplements, bestsellers, trending. Matches any category the product is filed under. Leave empty for all categories.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "brandUrlKeys": {
            "title": "Brand filter",
            "type": "array",
            "description": "Keep only these brand slugs, e.g. thrive-market, simple-mills, primal-kitchen. Leave empty for all brands.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "dietValues": {
            "title": "Diet / claim filter",
            "type": "array",
            "description": "Keep only products carrying ALL of these claim labels, e.g. Organic, Gluten-Free, Vegan, Keto, Paleo, Non-GMO, Certified Kosher. Leave empty to ignore.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyDiscounted": {
            "title": "Only discounted products",
            "type": "boolean",
            "description": "Keep only products where the member price is below the compare-at price.",
            "default": false
          },
          "onlyInStock": {
            "title": "Only in-stock products",
            "type": "boolean",
            "description": "Keep only products that are currently purchasable in at least one fulfilment centre.",
            "default": false
          },
          "onlyThriveExclusive": {
            "title": "Only Thrive Market private label",
            "type": "boolean",
            "description": "Keep only Thrive Market's own-brand / exclusive products.",
            "default": false
          },
          "minRating": {
            "title": "Minimum average rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only products rated at or above this value (0-5). Use 0 to ignore.",
            "default": 0
          },
          "minReviewCount": {
            "title": "Minimum rating count",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only products with at least this many ratings. Useful as a demand / popularity floor.",
            "default": 0
          },
          "maxSalesRank": {
            "title": "Max sales rank",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only products whose bestseller rank is at or below this number, i.e. the top sellers. Use 0 to ignore.",
            "default": 0
          },
          "includeNutrition": {
            "title": "Nutrition facts",
            "type": "boolean",
            "description": "Include the full nutrition panel (serving size, calories, per-nutrient amounts and % daily values).",
            "default": true
          },
          "includeIngredients": {
            "title": "Ingredient lists",
            "type": "boolean",
            "description": "Include the declared ingredient list for each product.",
            "default": true
          },
          "includeWarehouseInventory": {
            "title": "Per-warehouse inventory",
            "type": "boolean",
            "description": "Include unit quantities per fulfilment centre, which reveals regional depth and stock-out risk.",
            "default": true
          },
          "includeReviews": {
            "title": "Sample reviews",
            "type": "boolean",
            "description": "Include the handful of reviews rendered on the product page. Reviewer names, customer IDs and locations are always stripped.",
            "default": false
          },
          "includeSimilarProducts": {
            "title": "Similar / competing products",
            "type": "boolean",
            "description": "Include the products Thrive Market itself cross-links as alternatives, with their price and rank.",
            "default": false
          },
          "includeRawProduct": {
            "title": "Raw product object",
            "type": "boolean",
            "description": "Attach the site's complete underlying product object. Large, but future-proof if you want fields this Actor does not map yet.",
            "default": false
          },
          "trackChanges": {
            "title": "Track changes between runs",
            "type": "boolean",
            "description": "Persist a snapshot per SKU and enrich every record with price moves, rank moves, stock flips, rating growth and new-product detection. This is what turns the Actor into a monitoring feed.",
            "default": false
          },
          "onlyChanged": {
            "title": "Only output products that changed",
            "type": "boolean",
            "description": "Return just the SKUs whose price, bestseller rank, inventory or review count moved since the previous run, plus brand-new SKUs. Turns a full sweep into a compact change feed and keeps pay-per-result costs down. Implies change tracking.",
            "default": false
          },
          "snapshotStoreName": {
            "title": "Snapshot store name",
            "type": "string",
            "description": "Named key-value store holding the baseline. Use one store per watchlist so schedules do not overwrite each other.",
            "default": "thrive-market-snapshots"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Parallel requests. Thrive Market's robots.txt suggests a 5 second crawl delay for agents, so keep this modest and pair it with the delay below for polite crawling.",
            "default": 5
          },
          "sameDomainDelaySecs": {
            "title": "Delay between requests",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Seconds to wait between consecutive requests to thrivemarket.com. Set to 5 to follow the crawl-delay published in robots.txt.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Thrive Market sits behind a WAF. Residential or datacenter Apify Proxy is strongly recommended.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}