Costco Scraper - Products, Prices, Reviews & Warehouses
Pricing
from $2.20 / 1,000 results
Costco Scraper - Products, Prices, Reviews & Warehouses
Extract Costco products, prices, ratings, reviews, categories, and warehouse locations across eight markets. Export structured rows and pay per delivered row plus a run start fee.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
10
Total users
6
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Costco Scraper
Extract Costco products, prices, reviews, categories, and warehouse locations across eight markets as rows you can export.
- Search products or browse categories and Hot Buys.
- Get product identifiers, prices, ratings, availability, and images when shown.
- Collect reviews, category entries, or warehouse addresses as separate row types.
- Choose the United States, Canada, Mexico, United Kingdom, Australia, Japan, South Korea, or Taiwan.
- Pay only for rows delivered: $3.00 per 1,000 rows on the Free plan, plus a start fee.
What does Costco Scraper do?
Costco Scraper collects publicly available shopping data from costco.com, costco.ca, costco.com.mx, costco.co.uk, costco.com.au, costco.co.jp, costco.co.kr, and costco.com.tw. Use one target per run for price tracking, assortment research, review analysis, or location lookup.
- Product listings: search with
keyword, browse withcategoryUrlorcategorySlug, or choose atopic. - Product details: use
productUrloritemId. - Reviews: choose
productReviews; each review is a separately billed row, not an automatic addition to a product row. - Locations and categories: choose
warehouseLocationsorcategoryTree. - Optional enrichment:
enrichDetailsis off by default. It adds available product details to existing listing rows, rather than creating extra rows.
This is an unofficial tool, not affiliated with Costco. It does not place orders or access private member accounts.
What data can you extract from Costco?
Fields depend on the selected mode and what Costco provides. Missing values may be absent or null. rowType distinguishes products, reviews, warehouses, and categories.
Product rows
| Field | Description | Example |
|---|---|---|
rowType | Entity type | product |
itemId | Costco item number | 4000376434 |
sku | Additional product identifier, when supplied | null |
title | Product name | Paper towels, 12 rolls |
url | Product link | https://www.costco.com/p/-/ninja-crispi-portable-air-fryer/4000376434 |
price | Displayed price, not a checkout quote | 119.99 |
currency | Currency associated with the price | USD |
brand | Brand shown for the product | Ninja |
rating | Average product rating | 4.7 |
reviewCount | Number of ratings or reviews shown | 125 |
availability | Availability information when supplied | InStock |
images | Product image links, when available | [] |
pdp | Additional details on enriched listing rows | {"brand":"Ninja"} |
browseCountry | Selected market | US |
sourceSurface | Type of page supplying the row | keywordSearch |
scrapedAt | Collection timestamp | 2026-10-24T00:00:00Z |
Review rows
| Field | Description | Example |
|---|---|---|
rowType | Entity type | review |
reviewId | Review identifier | example-review-1 |
itemId | Reviewed item's number, when supplied | 10024438 |
title | Review heading | Useful size |
text | Review content when provided under this field | Fits the shelf well. |
rating | Individual review score | 4 |
author | Public reviewer display name | Jane Doe |
submissionTime | Review publication timestamp | 2026-10-20T12:00:00Z |
Warehouse rows
| Field | Description | Example |
|---|---|---|
rowType | Entity type | warehouse |
name | Warehouse name | Example warehouse |
url | Warehouse or locator link | https://www.costco.com/warehouse-locations |
address | Available street, locality, region, postal code, and country | {"locality":"Seattle","country":"US"} |
phones | Public warehouse phone entries | [{"value":"+1 555 0100","type":"phone"}] |
Category rows
| Field | Description | Example |
|---|---|---|
rowType | Entity type | category |
name | Category name | Grocery & Household |
slug | Category path identifier | grocery-household |
url | Category link | https://www.costco.com/grocery-household.html |
depth | Category level, when available | 1 |
parentId | Parent category identifier, when supplied | null |
path | Category hierarchy, when supplied | ["grocery-household"] |
How to scrape Costco
- Open Costco Scraper in Apify Console.
- Choose
browseCountryand fill one target, such askeyword. - Set
maxResultsto3for a small first run. - Click Start and wait for completion.
- Open the dataset and download your rows or read them through the API.
Empty input starts the form's example: paper towels in CA (Canada), limited to 3 rows. This is a billed example, not a free preview. With mode set to auto, filling one target selects its matching mode. Explicit warehouseLocations and categoryTree runs need no target and do not become examples.
Keyword search
Fill keyword, such as paper towels. Set browseCountry for the desired market; use words appropriate to that market.
Category browse
Fill categoryUrl or categorySlug. Full links must match browseCountry. A US example is grocery-household.
Specialty browse
Set topic to hotBuys, whatsNew, warehouseOnly, or grocery. Topic availability varies by market.
Product detail
Fill productUrl or itemId. This selects productDetail automatically and returns details for one product, not a list of unrelated products.
Product reviews
Select mode: productReviews explicitly, then fill productUrl or itemId. Without this mode, a product target selects product details instead.
Warehouse locations
Select mode: warehouseLocations. Add zip to request a postal-code search where supported. Results are warehouse entries, not product-level stock guarantees.
Category tree
Select mode: categoryTree to get category entries. The returned list is not a guarantee of an exhaustive or fully current catalog.
What to fill in
| Field | What to enter | Default |
|---|---|---|
mode | auto or one of the seven modes above | auto |
browseCountry | US, CA, MX, UK, AU, JP, KR, TW | US |
keyword | One search phrase | None; form sample paper towels |
query | Older name for keyword | Empty |
productUrl | Product link matching the market | Empty |
itemId | Product item number | Empty |
slug | Optional product-name path for an item number | Empty |
categoryUrl | Category link matching the market | Empty |
categorySlug | Category path without the domain | Empty |
topic | One of the four specialty topics | Empty |
maxResults | Row limit, from 1 to 500 | 70; form sample 3 |
zip | Postal code for location context | Empty |
warehouse | Warehouse identifier for location context | Empty |
dept | Department filter for supported keyword searches | Empty |
sort | relevance, priceAsc, priceDesc, newest, or rating | Site order |
currency | Optional currency setting; not currency conversion | By market |
page | Starting page, from 1 to 200 | 1 |
maxPages | Page cap per part of up to 70 rows, from 1 to 50 | No explicit cap |
enrichDetails | Add available details to listing rows | false |
enrichLimit | Listings to enrich per part, from 0 to 50 | 5 |
Keyword search:
{"keyword": "paper towels","browseCountry": "US","maxResults": 3}
Category browse:
{"categorySlug": "grocery-household","maxResults": 3}
Specialty browse:
{"topic": "hotBuys","maxResults": 3}
Product detail:
{"productUrl": "https://www.costco.com/p/-/ninja-crispi-portable-air-fryer/4000376434","maxResults": 1}
Product reviews:
{"mode": "productReviews","itemId": "10024438","maxResults": 3}
Warehouse locations:
{"mode": "warehouseLocations","zip": "98101","maxResults": 3}
Category tree:
{"mode": "categoryTree","maxResults": 3}
maxItems and limit are accepted aliases for maxResults. Unknown fields alone do not fail input validation: close misspellings are corrected where possible; other unknown fields are ignored with a note.
When targets conflict, precedence is productUrl, categoryUrl, itemId, categorySlug, topic, then keyword or query. Targets belonging to another mode are ignored, not collected as additional inputs. Use separate runs for separate targets.
The INPUT_REPORT record in the default key-value store records input interpretation, corrections, ignored fields, and example use. Invalid targets or market links stop before row collection with INVALID_INPUT: and a field-specific explanation. No rows are charged for input-validation failures; the start fee still applies.
Output example
Illustrative product row; prices and availability are not current offers:
{"rowType": "product","itemId": "4000376434","sku": null,"title": "Ninja Crispi 5-in-1 Portable Glass Air Fry Cooking System","url": "https://www.costco.com/p/-/ninja-crispi-portable-air-fryer/4000376434","price": 119.99,"currency": "USD","rating": 4.7,"browseCountry": "US","sourceSurface": "keywordSearch"}
Export the dataset as JSON, CSV, Excel, XML, RSS, or an HTML table. Keep identifiers as text when importing into a spreadsheet.
Why use this Costco scraper?
- Pay for delivered rows. Product, review, category, and warehouse rows use the same per-row price.
- Keep delivered data. Rows already written to the dataset remain available after a stop. Recoverable partial results can be delivered; a stop before delivery may leave no rows.
- Understand failures. Input errors explain what to fix;
RUN_SUMMARYand, on failure,ERROR_SUMMARYprovide run information. - Keep missing data honest. Unavailable fields stay empty rather than becoming invented prices or contact details.
- Compare markets deliberately. Select a market per run and keep
browseCountrywith your exports. - No proxy setup. You do not need to set up proxies.
How much does it cost to scrape Costco?
The Actor uses pay-per-event pricing. At the default 512 MB memory, the start fee is $0.005: one start event per GB, with a minimum of one event. Platform usage is included in these prices.
| Apify plan | Start fee at 512 MB | Price per row | Price per 1,000 rows |
|---|---|---|---|
| Free | $0.005 | $0.003 | $3.00 |
| Starter | $0.005 | $0.003 | $3.00 |
| Scale | $0.005 | $0.0026 | $2.60 |
| Business | $0.005 | $0.0022 | $2.20 |
| Platinum | $0.005 | $0.002 | $2.00 |
| Diamond | $0.005 | $0.0016 | $1.60 |
maxResultsapplies to the single input in a run, defaults to 70, and accepts up to 500. Searches, category listings, specialty listings, and reviews can continue in parts of up to 70 rows.- Category trees and warehouse lists return at most 70 rows. Availability and page limits may reduce the result count.
- Free Apify plan users are limited to 200 rows per run and 10 runs of this Actor.
- Maximum cost per run (
maxTotalChargeUsdin the API) limits the whole run. A budget too small for one row can leave an empty dataset after the start fee.
Example: one search delivering 5 rows on the Free plan at 512 MB costs 5 × $0.003 + $0.005 = $0.020. Requesting 5 rows does not guarantee 5 matches; row charges follow delivery.
What happens when the run timeout is too short
A short timeout can cause the run to pause instead of failing while results are pending. It shows ABORTED with a message like "Queued on the collection backend; this run will resume automatically when results are ready (about Ns)."
When ready, the same run resumes automatically, delivers into the same dataset, and finishes as SUCCEEDED if collection succeeds. A resume can report "Resumed: delivering N rows." Already delivered rows are skipped, so they are not delivered or charged twice.
This can happen at most 3 times per run. Keep the default timeout of 3600 seconds to reduce interruptions. Automatic resumption is not a promise that every manually aborted or failed run will recover.
The synchronous API endpoints run-sync and run-sync-get-dataset-items wait at most 300 seconds and can return an empty dataset while a run is paused. For longer work, start asynchronously and read the dataset after SUCCEEDED, or use an ACTOR.RUN.SUCCEEDED webhook.
Use with AI agents and the API
Apify MCP server
Add this remote tool in a compatible client such as Claude, ChatGPT, Cursor, or VS Code:
https://mcp.apify.com?tools=lentic_clockss/costco-scraper
Sign in through Apify OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool returns run and dataset IDs; the agent can read rows with get-dataset-items. Clients without remote support can use npx @apify/actors-mcp-server --tools lentic_clockss/costco-scraper with APIFY_TOKEN set locally.
Example prompt: "Search Costco US for paper towels, return at most 3 products, and show titles, prices, and links."
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/costco-scraper").call(run_input={"keyword": "paper towels", "maxResults": 3})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/costco-scraper').call({keyword: 'paper towels', maxResults: 3});const { items: rows } = await client.dataset(run.defaultDatasetId).listItems();console.log(rows);
For asynchronous HTTP access, send the input as JSON to POST https://api.apify.com/v2/acts/lentic_clockss~costco-scraper/runs with your bearer token. After successful completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json. If a waiting client returns an ABORTED run, apply the timeout guidance above rather than treating its dataset as final.
Integrations
Use Apify Schedules for recurring runs. Connect results through the Integrations tab to Google Sheets, Make, Zapier, n8n, Slack, Airtable, or your own webhook.
FAQ
Is it legal to scrape Costco?
Public availability does not remove your responsibilities. Check applicable terms and data-protection law for your use. Processing personal data, including reviewer names, requires a lawful basis. This Actor does not grant permission on Costco's behalf.
Why did my run end as ABORTED?
Read the status message. A queued run may resume automatically as described above. A manual abort or other interruption is different; check the run details before restarting and creating another billable run.
How many results can I get?
Set maxResults up to 500 for one input. The Free plan caps each run at 200 rows; warehouse and category-tree modes stop at 70. Source availability, page limits, and your spending limit can reduce delivery.
Why are some fields empty?
Not every page exposes a price, rating, image, phone number, or availability value. Listing enrichment may fill some fields, but does not guarantee them. An empty field is not a zero price or confirmed lack of stock.
Why do itemId and sku differ?
itemId identifies the item in the product link. sku is another identifier supplied with product details and may differ. Keep both when provided; neither is guaranteed on every row.
Can I send several keywords or links together?
No. Target fields accept single values. Competing target fields select one mode rather than creating a batch. Start separate runs for separate keywords, products, categories, or markets.
Are Same Day, Pharmacy, and China covered?
No. Same Day, Business Delivery, Pharmacy, Travel, and Photo are outside scope, as is China. Supported markets refer to Costco shopping sites, not all Costco services.
Why did a successful run return no rows?
A search with no matches can finish successfully with an empty dataset. Review the input and RUN_SUMMARY. Unavailable review data or collection failures are not a guarantee that the product has no reviews.
Limitations
- Market selection does not guarantee every mode, topic, department filter, or sort order works identically across countries.
- Prices and availability reflect exposed information, not member-specific discounts, checkout totals, or guaranteed warehouse inventory.
- Reviews and product-detail enrichment may be incomplete. Enriched listing details can appear inside
pdp. - Category entries may be incomplete or outdated; the category-tree mode is not a full-catalog product download.
- One target is processed per run. There is no documented date-window input or guaranteed automatic search-word translation.
Related scrapers
More e-commerce and marketplace scrapers from the same publisher:
- Walmart Product Scraper
- Temu Product Scraper
- Allegro Scraper
- TikTok Shop Product Scraper
- Amazon Search, Category & Best Sellers Scraper
- Coupang Product Scraper
- MercadoLibre Scraper
- Rakuten Japan Scraper
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Report a problem or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.