
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Get Amazon price history, current prices, 30/90/180/365-day averages, all-time lows, ratings and offer counts from Keepa for any ASIN or Amazon URL in 11 marketplaces, plus Keepa deals. No login needed.
Get Amazon price history and current prices from Keepa for any ASIN or Amazon product URL: Amazon, new, used, Buy Box, FBA, FBM, warehouse and lightning-deal prices, 30/90/180/365-day averages, all-time lows and highs, ratings, review counts and offer counts. Paste a Keepa deals URL to collect price drops too. No Keepa account, no login and no API key needed, and 1,000 products take about two minutes.
| Field | What it does |
|---|---|
products | ASINs (B0BN72FYFG), Amazon product URLs (https://www.amazon.de/dp/B07PGL2WVS) or Keepa product URLs (https://keepa.com/#!product/1-B0BN72FYFG). Duplicates are removed. |
dealsUrls | Addresses of Keepa Deals searches (https://keepa.com/#!deals/...), copied from the browser after setting the filters. |
maxDeals | Deals to keep per deals URL (default 20, 0 = all). |
marketplace | Marketplace for bare ASINs: us, uk, de, fr, it, es, ca, jp, in, mx or br (default us). |
includePriceHistory | Add the price and offer-count history to each product (default on). |
historyDays | Days of history to include (default 90, 0 = everything Keepa has). |
proxyConfiguration | Proxy for the connection to Keepa. Datacenter is the default and works well. |
{
"products": [
"B0BN72FYFG",
"https://www.amazon.com/dp/B0DZDBDCFH",
"https://keepa.com/#!product/3-B07PGL2WVS"
],
"dealsUrls": [],
"maxDeals": 20,
"marketplace": "us",
"includePriceHistory": true,
"historyDays": 90
}
Each product is one result ("type": "product"), each deal is one result ("type": "deal"). Prices are in the marketplace's currency; an empty price means there is no such offer right now.
| Field | Description |
|---|---|
asin, title, marketplace, currency | Product identity and the currency of all prices |
url, keepaUrl, imageUrl, images | Amazon page, Keepa page and product images |
amazonPrice, newPrice, usedPrice, buyBoxPrice, listPrice | Current prices |
newFbaPrice, newFbmPrice, warehousePrice, lightningDealPrice, refurbishedPrice, usedLikeNewPrice … | More current prices by offer type and condition |
rating, reviewCount | Current star rating and number of ratings |
newOfferCount, usedOfferCount | Current number of new and used offers |
amazonInStock, amazonOutOfStockPercent90, newOutOfStockPercent90 | Whether Amazon sells it now, and how often it was out of stock in 90 days |
amazonPriceAvg90, newPriceAvg90, buyBoxPriceAvg90, …LowestEver | Quick 90-day averages and all-time lows |
statistics | Per price type: current, 30/90/180/365-day averages, 90-day low and high, all-time low and high with dates |
priceHistory | Per price type: a list of {date, price} points (Buy Box and FBM with shipping, offer counts as {date, count}) |
parentAsin, variationAsins, variations | Variation family with each variation's attributes |
categoryIds, manufacturer, upcList, eanList, gtinList | Catalog data |
trackingSince, lastPriceChange, lastUpdate, scrapedAt | When Keepa started tracking, last price change, last Keepa update, scrape time |
Deal results have dealType (the price that dropped, e.g. buy_box or amazon), dateRange (the period the average covers), currentValue, averageValue, dropValue, dropPercent, currentSince, dealFoundAt, the current Amazon, new, used, Buy Box and list prices, and the deals URL it came from.
A product from a test run (history and lists shortened):
{
"type": "product",
"asin": "B0BN72FYFG",
"title": "Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)",
"marketplace": "us",
"currency": "USD",
"url": "https://www.amazon.com/dp/B0BN72FYFG",
"keepaUrl": "https://keepa.com/#!product/1-B0BN72FYFG",
"imageUrl": "https://m.media-amazon.com/images/I/61WUSYIQdKL.jpg",
"manufacturer": "Apple Computer",
"amazonPrice": null,
"newPrice": null,
"usedPrice": 265,
"buyBoxPrice": 304.95,
"listPrice": 389,
"warehousePrice": 277.14,
"refurbishedPrice": 298,
"rating": 4,
"reviewCount": 14147,
"usedOfferCount": 51,
"amazonInStock": false,
"buyBoxPriceAvg90": 303.7,
"amazonOutOfStockPercent90": 46,
"statistics": {
"buyBox": {
"current": 304.95,
"average30": 303.54,
"average90": 303.7,
"average180": 302.02,
"average365": 303.62,
"lowest90": 271.88,
"highest90": 319.99,
"lowestEver": 10,
"lowestEverAt": "2023-11-28T06:08:00Z",
"highestEver": 799.97,
"highestEverAt": "2022-12-10T12:08:00Z"
}
},
"parentAsin": "B0BY5V81ST",
"variations": [
{"asin": "B0CG84XDXG", "attributes": {"Color": "Yellow", "MemoryStorageCapacity": "128 GB", "ProductGrade": "Renewed"}}
],
"trackingSince": "2022-12-09T19:24:00Z",
"lastPriceChange": "2026-10-21T05:19:00Z",
"priceHistory": {
"used": [
{"date": "2026-10-20T23:26:00Z", "price": 260},
{"date": "2026-10-21T00:26:00Z", "price": 265}
],
"buyBox": [
{"date": "2026-10-21T02:28:00Z", "price": 295, "shipping": 0},
{"date": "2026-10-21T04:16:00Z", "price": 304.95, "shipping": 0}
]
},
"scrapedAt": "2026-10-21T06:43:04.471Z"
}
A deal:
{
"type": "deal",
"asin": "B001BOA2OI",
"title": "Cool It Carol",
"marketplace": "us",
"currency": "USD",
"url": "https://www.amazon.com/dp/B001BOA2OI",
"dealType": "buy_box",
"dateRange": "week",
"currentValue": 19.99,
"averageValue": 185.69,
"dropValue": 165.7,
"dropPercent": 89,
"currentSince": "2026-10-20T03:47:00Z",
"buyBoxPrice": 19.99,
"listPrice": 29.98
}
You pay per result:
Example: 1,000 products with 90 days of history cost $5.00 in results plus about $0.07 of platform usage (compute, proxy and the browser that passes Keepa's visitor check), measured on our test run. ASINs Keepa doesn't know and invalid inputs are not charged. You can cap any run with a maximum charge, and the run stops cleanly when it is reached.
Is it legal to scrape Keepa? The actor reads the same public price data keepa.com shows to any visitor without an account. It doesn't log in and doesn't collect personal data. Check that your use of the data follows the rules that apply to you.
Do I need a Keepa account, API key or proxy? No. The run passes Keepa's visitor check by itself in a hosted browser, and the default datacenter proxy is included in the platform usage.
How many products can I scrape? As many products as you list, and as many deals per deals URL as Keepa shows.
Why is a field empty? An empty price means there is no offer of that type right now (for example Amazon itself is out of stock). Keepa reserves some data for its subscribers, see Limits.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it daily for price monitoring, and read the results through the API or connect them to your tools with integrations and webhooks.
Is the first run slower? The first run passes Keepa's visitor check in a browser, which adds about 20 to 40 seconds. Later runs reuse it and start fetching right away.
lastUpdate shows when Keepa last refreshed a product.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
productsarrayOptionalASINs or product URLs
Amazon ASINs, Amazon product URLs (amazon.com, .co.uk, .de, .fr, .it, .es, .ca, .co.jp, .in, .com.mx, .com.br) or Keepa product URLs (keepa.com/#!product/1-B0...). A URL sets its own marketplace; a bare ASIN uses the marketplace below. Duplicates are removed.
dealsUrlsarrayOptionalKeepa deals URLs
Optional. Set your filters on keepa.com/#!deals and paste the full address from the browser. Each deal found is one result. Filters Keepa reserves for subscribers (sales rank, brand and similar) are ignored.
maxDealsintegerOptionaldefault 20Max deals per deals URL
How many deals to save for each Keepa deals URL. 0 means all.
marketplaceenumOptionaldefault "us"Marketplace for bare ASINs
Amazon marketplace used for plain ASINs. Amazon and Keepa URLs carry their own marketplace.
includePriceHistorybooleanOptionaldefault trueInclude price history
Add the full price and offer-count history (Amazon, new, used, Buy Box, list price, FBA, FBM, warehouse deals, lightning deals and more) to each product. Included in the product price.
historyDaysintegerOptionaldefault 90History window (days)
How many days of history to include. 0 means the full history Keepa has (often several years, which makes each result large). Averages and all-time lows are always computed from the full history.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy for the connection to Keepa. Datacenter proxies work well and are the cheapest.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | product or deal |
| asin | string | |
| title | string | null | |
| marketplace | string |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Deal | One deal from a Keepa deals search. | $0.0006 |
| Product | One Amazon product with current prices, statistics and price history. | $0.005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/keepa-scraper').call({
"products": [
"B0BN72FYFG",
"https://www.amazon.com/dp/B0DZDBDCFH",
"https://keepa.com/#!product/3-B07PGL2WVS"
],
"maxDeals": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/keepa-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/keepa-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Current prices, 90-day averages, all-time lows and 90 days of price history for five popular Amazon.com products.
Twenty Amazon.com deals from a Keepa deals search: products whose Amazon price fell at least 20% below the weekly average.
Product pages from amazon.co.uk, amazon.de and amazon.fr with prices in GBP and EUR and 30 days of history.
Two pages of amazon.de deals from a Keepa deals search, in EUR.
Current prices and statistics for amazon.co.jp products in JPY, with the price history switched off.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.