Costco Scraper — Product Search, Details & Price API
Pricing
from $0.90 / 1,000 search result rows
Costco Scraper — Product Search, Details & Price API
Scrape Costco.com and Costco.ca: keyword product search and full product details by item number. Sale, list and per-unit prices, ratings, stock status, brand and images in one clean JSON dataset. Built for price monitoring, price tracking and catalog enrichment.
Pricing
from $0.90 / 1,000 search result rows
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
28
Total users
10
Monthly active users
2.3 hours
Issues response
4 days ago
Last modified
Categories
Share
Costco Scraper — Product Search, Details & Price API 🛒
🎉 Live Costco product data: search any keyword or pull full product details by item number, into one clean JSON dataset
For price monitoring, price tracking and catalog enrichment teams who want dependable Costco data without running their own browser scraper
📋 Overview
Costco product data without the scraping chores. This Costco Scraper pulls keyword search results and full product details from costco.com (US) and costco.ca (Canada) into clean, query-ready JSON. You don't manage browsers, proxies or captchas.
What you get:
- ✅ API-backed reliability: structured rows on every run, rather than an HTML scraper that breaks when Costco changes its page layout.
- ⚡ Two operations, one dataset per run: keyword Product Search (~24 products per page) or Product Details by item number.
- 🎯 Structured fields: sale price, list price, per-unit price, ratings, stock status, brand (including Kirkland Signature), program eligibility, category path, marketing features and image galleries.
- 💰 Pay per result: you're charged only for products you receive, plus a small Actor-start fee. No monthly subscription.
- 💎 US + Canada: costco.com in English, or costco.ca in English (
en-CA) or French (fr-CA). The language matches the country automatically. - ✨ Clean camelCase output: readable field names, with Costco's original fields kept alongside so nothing is dropped.
✨ Features
- 🔍 Product Search: search Costco by any keyword and paginate through results (~24 products per page).
- 📦 Product Details: fetch one product's full record by its Costco item number.
- 💲 Full pricing: sale price, list price, minimum/maximum price, and per-unit price with currency.
- ⭐ Ratings & reviews count: average rating and total review count per product.
- 📦 Availability intel: in-stock flag, stock status, delivery status, backorder flag, and fulfillment min/max quantities.
- 🏷️ Membership signals: member-only flag and program eligibility (ShipIt, 2-Day Delivery, In-Warehouse, Warehouse Delivery).
- 🧾 Catalog data: brand, category path, item class, department/category, marketing features and statement.
- 🖼️ Images: primary image plus the full image gallery, with HTTPS-normalized URLs.
- 🌍 US + Canada: costco.com (English) or costco.ca (English or French).
- 📄 Auto-pagination: search stops on its own when there are no more results.
🎬 Quick Start
Pick an operation, give it a query (search) or an item number (details), and run. Each run produces one dataset for the chosen operation. Results export to JSON, CSV, or Excel from the Apify dataset.
curl -X POST "https://api.apify.com/v2/acts/sian.agency~costco-data-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"operation": "search", "query": "paper towels", "maxPages": 2}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose your operation
Select Product Search to discover products by keyword, or Product Details to fetch a single product by its Costco item number.
Step 2: Provide your input
For search, enter a query like air fryer. For details, enter an item number like 512599. Optionally set the country (US or CA), the language and max pages.
Step 3: Run and export
Start the run and the dataset fills as pages come back. Export to JSON, CSV, or Excel, or pull results via the Apify API.
A few minutes later you'll have:
- A structured dataset of Costco products
- Current prices, ratings, stock status and brand for each one
- Fields ready for price-monitoring or catalog workflows
⏱️ Note: Costco responds slowly. Each page can take 1–2 minutes, so large page counts run long. The actor retries temporary failures by itself.
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
operation | string | Yes | search or productDetails — pick one per run |
query | string | For search | Costco product search query (e.g. paper towels) |
productId | string | For productDetails | Costco item number (e.g. 512599) |
country | string | No | US (costco.com, default) or CA (costco.ca) |
language | string | No | en-US for US; en-CA or fr-CA for CA. Leave empty to match the country |
maxPages | integer | No | Pages to fetch for search (default 5, max 50) |
Search example:
{"operation": "search","query": "kirkland signature olive oil","country": "US","maxPages": 3}
Product details example:
{"operation": "productDetails","productId": "512599","country": "US"}
Costco Canada example (French results):
{"operation": "search","query": "café","country": "CA","language": "fr-CA","maxPages": 1}
Country and language go together: US uses costco.com in English (en-US), and CA uses costco.ca in English (en-CA) or French (fr-CA). Leave language empty and it follows the country. If you pick a language the country doesn't offer, the actor switches to that country's default instead of failing.
📤 Output
Results are saved to the Apify dataset with 40+ structured fields per product, including:
| Field | Type | Description |
|---|---|---|
itemNumber | string | Costco item number (primary id) |
itemName | string | Product name |
brand | array | Brand(s), e.g. ["Kirkland Signature"] |
salePrice | number | Current sale price |
listPrice | number | List price |
pricePerUnit | number | Price per unit |
currency | string | Currency code (e.g. USD) |
rating | number | Average rating |
reviewCount | integer | Total review count |
memberOnly | boolean | Member-only product flag |
inStock | boolean | In-stock flag |
stockStatus | string | e.g. in stock |
programEligibility | array | Fulfillment programs (ShipIt, 2-Day, In-Warehouse…) |
categoryPath | array | Category breadcrumb paths |
skus | array | Manufacturer codes, only when Costco publishes them — empty for most items, so not a reliable source of UPC/GTIN barcodes |
image | string | Primary image URL |
images | array | Full image gallery |
productUrl | string | Costco product URL |
Example row (truncated):
{"_operation": "search","status": "success","itemNumber": "512599","itemName": "Kirkland Signature Paper Towels, 2-Ply, 160 Sheets, 12 Rolls","brand": ["Kirkland Signature"],"salePrice": 23.99,"listPrice": 23.99,"pricePerUnit": 23.99,"currency": "USD","rating": 0,"reviewCount": 0,"memberOnly": false,"inStock": true,"stockStatus": "in stock","programEligibility": ["ShipIt", "2DayDelivery", "InWarehouse"],"categoryPath": ["/grocery-household.html", "/paper-towels-napkins.html"],"skus": [],"image": "https://bfasset.costco-static.com/.../512599-847__1"}
Filter the dataset by _operation (search / productDetails) or status (success / error) to split or clean rows.
💼 Use Cases & Examples
1. Price & Assortment Monitoring
Retail analysts tracking Costco prices across a category.
Input: Product Search with a category query, scheduled daily Output: Sale price, list price, per-unit price, and stock status per product Use: Diff the dataset between runs to catch price moves, rollbacks and new items.
2. Costco Price Tracking
E-commerce operators following specific item prices over time.
Input: Product Details for a known item number, run on a schedule Output: Current sale/list price, member-only flag, and availability Use: Power a price-tracker dashboard or alerting workflow on price drops.
3. Competitor Catalog Mapping
Brand managers benchmarking against Costco's assortment.
Input: Product Search across your product segments Output: Brand presence (incl. Kirkland Signature), category coverage, and positioning Use: Map Costco's catalog against your own to find gaps and overlaps.
4. Product Catalog Enrichment
Data teams building a structured product database.
Input: Product Details for a list of item numbers Output: Marketing features, program eligibility, category path, image gallery Use: Enrich your own catalog with clean, query-ready Costco attributes.
5. Membership & Availability Intelligence
Operations teams analyzing Costco availability at scale.
Input: Product Search or Details with stock fields Output: Member-only flags, in-stock status, delivery status, fulfillment programs Use: Understand membership-gated pricing and availability patterns across products.
6. Market Research & Pricing Studies
Researchers studying warehouse-club pricing.
Input: Broad keyword searches across categories Output: Price, per-unit price, brand, and rating data in bulk Use: Build pricing datasets for analysis, modeling, or reporting.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/costco-data-scraper').call({operation: 'search',query: 'air fryer',maxPages: 2,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/costco-data-scraper').call(run_input={'operation': 'productDetails', 'productId': '512599'})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~costco-data-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation": "search", "query": "olive oil", "maxPages": 1}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule (e.g. daily price check) or webhook
- HTTP Request: Call the actor API with your operation + input
- Process: Handle the JSON dataset rows
- Action: Save to a database, diff prices, or send alerts
📊 Performance & Pricing
FREE Tier (Try It Now)
- Run both operations with the same fields as paid runs
- No credit card required
- Perfect for testing and small price checks
PAID Tier (Production Ready)
- Scale up search pagination and bulk item lookups
- Pay-per-result: only charged for successful products
- Small Actor-start fee, no subscription
💰 You pay for the Costco products you actually get, not a flat monthly fee.
❓ Frequently Asked Questions
Q: What can I scrape from Costco? A: Two operations: keyword Product Search (paginated product listings) and Product Details by Costco item number. Both return prices, ratings, stock, brand, program eligibility, category path and images.
Q: Why is a run slow sometimes? A: Costco responds slowly, and each page can take 1–2 minutes. The actor retries temporary failures and stops paginating once there are no more results.
Q: Does it support Costco Canada?
A: Yes. Set country to CA to query costco.ca (the default is US, costco.com in English). Canadian results come back in English (en-CA) unless you set language to fr-CA for French. If language is empty, or set to one the country doesn't offer, the actor uses the country's default.
Q: How do I find an item number?
A: Run Product Search first. Every result row includes itemNumber, and the same number appears in Costco product URLs.
Q: Does it scrape customer review text? A: No. Each product comes with its average rating and review count, but not the individual review text.
Q: What output formats are available? A: JSON, CSV and Excel. Export straight from the Apify dataset, or pull results via the Apify API.
Q: Is this legal? A: We only extract publicly available product data. See the legal section below.
🐛 Troubleshooting
A run returns an error row instead of products
- Costco may have been temporarily unavailable. Re-run it; the actor already retries automatically.
- For Product Details, double-check the item number is valid (run Product Search to confirm it).
Search returns fewer pages than maxPages
- This is expected. Pagination stops when Costco has no more results for your query.
A run takes several minutes
- Costco responds slowly (1–2 minutes per page). Start with
maxPagesbetween 1 and 3 to preview before scaling up.
No results for a query
- Try a broader or differently-worded query; very specific phrases can return zero matches.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what has been chosen to be shared publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Need help?
- For issues or questions, open an issue in the actor's Issues tab
- Check the SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
✨ More by SIÁN Agency
- Amazon Influencer & Deals Scraper — Amazon search, products, deals & reviews
- Taobao & Tmall Product Scraper — Chinese e-commerce products & search
- TikTok Shop Scraper — TikTok Shop products, search & sellers
- Browse all SIÁN actors →
⚠️ Trademark Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Costco Wholesale Corporation. "Costco", "Kirkland Signature", and related marks are trademarks of their respective owners and are used here only to describe the data this tool helps you collect. Use this actor responsibly and in compliance with applicable laws, Costco's terms of service, and data-protection regulations (including GDPR and CCPA where applicable). You are responsible for how you use the data you extract.
Legal
Scrape only publicly available data and use it lawfully. For guidance on ethical and compliant web scraping, see Apify's guide to web scraping legality. Do not collect personal data in violation of GDPR, CCPA, or other applicable privacy laws.
Built by SIÁN Agency | More Tools