{
  "openapi": "3.0.1",
  "info": {
    "title": "Walgreens Products & Reviews Scraper",
    "description": "Scrape Walgreens products by keyword, category or product URL. Extract prices, promotions, availability, ingredients, descriptions, product details, ratings and customer reviews in clean, structured data.",
    "version": "0.1",
    "x-build-id": "XfCZhttg4IkdaYMsI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~walgreens-com/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-walgreens-com",
        "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/abotapi~walgreens-com/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-walgreens-com",
        "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/abotapi~walgreens-com/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-walgreens-com",
        "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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search mode uses keywords, filters and sorting. URL mode uses the supplied links and ignores search inputs.",
            "default": "search"
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "One or more keywords. Used in Search mode only; products from all terms are deduplicated.",
            "default": [
              "toothpaste"
            ],
            "items": {
              "type": "string"
            }
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Exact brand names, such as Crest or Colgate. Match any supplied brand. Search mode only.",
            "items": {
              "type": "string"
            }
          },
          "productTypes": {
            "title": "Product types",
            "type": "array",
            "description": "Exact product type names, such as Toothpaste or Manual Toothbrushes. Search mode only.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Include products with a current price at least this amount. Search mode only."
          },
          "maxPrice": {
            "title": "Maximum price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Include products with a current price no more than this amount. Search mode only."
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Include products rated at least this value, from 0 to 5. Search mode only."
          },
          "onlineOnly": {
            "title": "Available online only",
            "type": "boolean",
            "description": "Include products marked in stock online. Search mode only.",
            "default": false
          },
          "offersOnly": {
            "title": "Products with offers only",
            "type": "boolean",
            "description": "Include products with an offer or a discounted sale price. Search mode only.",
            "default": false
          },
          "sortBy": {
            "title": "Sort results",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "rating_desc",
              "reviews_desc",
              "top_sellers",
              "name_asc",
              "name_desc"
            ],
            "type": "string",
            "description": "Ordering applied separately to each search term. Search mode only.",
            "default": "relevance"
          },
          "urls": {
            "title": "Category or product URLs",
            "type": "array",
            "description": "Category, search-result, or product links. URL mode ignores keyword inputs and search controls; supported filters and ordering already present in the links are retained.",
            "default": [
              "https://www.walgreens.com/store/store/category/productlist.jsp?N=20003053",
              "https://www.walgreens.com/store/store/category/productlist.jsp?N=20003053&No=72",
              "https://walgreens.com/store/store/category/productlist.jsp?N=20003053"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum products to save across the selected sources. Set 0 for no product cap.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per source",
            "minimum": 0,
            "type": "integer",
            "description": "Page limit per search term or category. Leave 0 for no extra limit: the actor stops at a hard cap of 1000 pages per source and Max items is the effective cap."
          },
          "fetchDetails": {
            "title": "Include full product information",
            "type": "boolean",
            "description": "Include the full image gallery, descriptions, ingredients, warnings, uses, shipping information, and complete product details.",
            "default": false
          },
          "fetchReviews": {
            "title": "Include customer reviews",
            "type": "boolean",
            "description": "Collect individual reviews with text, ratings, dates, public author details, photos, videos, and helpfulness counts.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 0,
            "maximum": 1010,
            "type": "integer",
            "description": "Newest reviews to collect for each product. Set 0 to use the cap of 1000; larger values are reduced to 1000. Large review collections increase output size and run time.",
            "default": 20
          },
          "proxy": {
            "title": "Connection settings",
            "type": "object",
            "description": "Optional Apify connection settings for collection requests."
          },
          "resumeFromRunId": {
            "title": "Resume from run or dataset ID",
            "type": "string",
            "description": "Skip product IDs already saved in an earlier run or dataset."
          },
          "incrementalMode": {
            "title": "Track changes across runs",
            "type": "boolean",
            "description": "Compare products with the previous completed scan of the same mode, sources, filters, and enrichment options. Compared: price, sale price, rating, review count, inventory status, title, brand, image links and the other product fields. Excluded by default (still in the output): the raw catalog copy and the nearest-store stock wording, which changes with the connection used. Use Change scope to compare only price and stock.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Optional custom baseline name. Each mode, source set, filter and enrichment configuration has its own baseline."
          },
          "emitUnchanged": {
            "title": "Include unchanged products",
            "type": "boolean",
            "description": "Save unchanged products during recurring scans.",
            "default": false
          },
          "emitExpired": {
            "title": "Include disappeared products",
            "type": "boolean",
            "description": "Save an expired row for a product missing from a completed scan of the same scope. Scans that start past the first page, use search filters, or stop early (page or item limit) are never treated as complete.",
            "default": false
          },
          "changeScope": {
            "title": "Change scope",
            "enum": [
              "all",
              "priceAndStock"
            ],
            "type": "string",
            "description": "Which changes mark a product as updated. Price and stock only compares price, regular price, sale price, sale flag, deal text, online stock status and the terms of each offer; descriptions, images, labels and other details never create an updated row (they stay in the output of new products). Incremental mode only.",
            "default": "all"
          },
          "compactUpdates": {
            "title": "Compact updated rows",
            "type": "boolean",
            "description": "Save updated and expired rows as short rows: product ids, link, title, current price and stock, and old and new values of what changed (priceChanges, variantChanges). New products stay complete. A compact row has no full product information or reviews, so none is collected or charged for it. Incremental mode only.",
            "default": false
          },
          "expireAfterMissedScans": {
            "title": "Expire after missed scans",
            "minimum": 1,
            "type": "integer",
            "description": "With Include disappeared products, save an expired row only after the product was missing from this many completed scans in a row. 1 expires at the first missed scan. Expired means the product was not in the scanned listings; it does not prove the product was removed from sale.",
            "default": 1
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Field names left out when deciding whether a product changed. Dotted paths such as reviews.date drop that key from every element. Image links and the raw catalog copy are already ignored by default. Ignored fields stay in the output.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a page per product; other connectors get a best-effort write or digest. Each connector receives a condensed summary per product, not the full record; the complete record always stays in the dataset. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which product pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on products written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}