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

Scrape Oscaro car parts by part name, OE or manufacturer reference, part type or product URL: prices in EUR, promotions, stock, brand, EAN, full specs, every cross-reference and vehicle-fit count. France, Spain, Portugal and Belgium shops. No login.
Turn any Oscaro search into a clean car-parts dataset: prices in EUR, promotions, stock, brand, reference, EAN, the full technical spec sheet, every OE and aftermarket cross-reference, and how many vehicles each part fits. Search by part name, by OE or manufacturer reference, or paste Oscaro links. No vehicle selection, no login, and every row already has the full details for $5 per 1,000 products.
plaquette de frein, filtre à huile) or a reference (GDB1330, 0986494027), with no make or model to pick first.plaquette de frein matches tens of thousands of parts. The scraper splits it by brand, part type, promotion and stock, so you can go past the first 1,000 results the site's search shows.| Field | Description |
|---|---|
queries | Part names or OE / manufacturer references, one per line. |
startUrls | Oscaro product pages (…-p), part-type pages (…-1862-g) or search pages (/search?q=…). |
maxResults | Products per search or part-type URL (default 20, 0 = all). |
country | Shop: fr, es, pt or be. |
brand | Only these brands, comma separated (e.g. BOSCH, VALEO). |
genartId | Only these part-type IDs (e.g. 402 = brake pad set). |
available / promo / universal | In stock only / on promotion only / universal parts only. |
{
"queries": ["plaquette de frein", "GDB1330"],
"maxResults": 100,
"country": "fr",
"brand": "BOSCH, BREMBO",
"available": true
}
| Field | Description |
|---|---|
item_id, url | Oscaro article ID and product page |
productTitle, part_type, genart_id | Part type label and ID |
brand, brand_id, brand_logo | Manufacturer |
reference, search_reference, ean | Manufacturer reference (as shown and without spaces) and EAN barcode |
category, sub_category | Oscaro category |
price, raw_price, public_price, consign_price | Price, price before promotion, list price (RRP) and core deposit, VAT included |
currency, tax_rate | EUR and the VAT rate |
on_promotion, promotion_percentage, promo_start_date, promo_end_date | Current promotion |
available, sold_as_pack, boxes_count, universal | Stock and packaging |
vehicle_type_count | Number of vehicle types the part fits |
equivalent_references | Every cross-reference, grouped by manufacturer |
specs | Technical specifications (label: value) |
thumbnail, images | Product image |
market, search_query, source_url, position, scraped_at | Where and when the row was found |
Example row from a test run (cross-references and specs shortened):
{
"item_id": "14506837",
"productTitle": "Jeu de 4 plaquettes de frein",
"thumbnail": "https://oscaro.media/jpg/normal/65/p68024x_a.jpg",
"url": "https://www.oscaro.com/jeu-de-4-plaquettes-de-frein-brembo-p-68-024x-14506837-402-p",
"reference": "P 68 024X",
"search_reference": "P68024X",
"ean": "8020584121795",
"brand": "BREMBO",
"brand_id": "65",
"brand_logo": "https://oscaro.media/osclogo/0065001.png",
"genart_id": "402",
"part_type": "Jeu de 4 plaquettes de frein",
"category": "Freinage",
"sub_category": "Plaquettes de frein",
"price": 45.14,
"raw_price": 45.14,
"public_price": 111.7,
"consign_price": 0,
"currency": "EUR",
"tax_rate": 20,
"on_promotion": false,
"promotion_percentage": null,
"images": ["https://oscaro.media/jpg/normal/65/p68024x_a.jpg"],
"available": false,
"sold_as_pack": true,
"boxes_count": 1,
"universal": false,
"vehicle_type_count": 932,
"equivalent_references": [
{ "manufacturer": "STOP", "references": ["573005S"] },
{ "manufacturer": "NK", "references": ["223947"] },
{ "manufacturer": "ICER", "references": ["181650"] }
],
"specs": {
"quantité": "4",
"épaisseur": "16,00",
"longueur": "87,00",
"hauteur": "53,00",
"numéro WVA": "20961, 23554"
},
"market": "fr",
"source_url": "https://www.oscaro.com/jeu-de-4-plaquettes-de-frein-brembo-p-68-024x-14506837-402-p",
"position": 1,
"scraped_at": "2026-10-21T18:41:46.794Z"
}
The dataset has two views: Products (one row per part) and Cross-references (one row per equivalent brand of each part).
You pay $0.005 per product saved, which is $5.00 per 1,000 products, with all details included. A typical job of 1,000 products costs $5 plus platform usage (compute and proxy traffic), which is billed on top and came to under one cent per 1,000 products in our tests. Searches that find nothing and invalid inputs are not charged per product, and you can cap any run with a maximum charge: the run then stops cleanly once the cap is reached.
Is it legal to scrape Oscaro? The scraper only reads public product information that anyone can see without an account. Check that your use of the data complies with Oscaro's terms and the laws that apply to you.
Do I need an account, a login or my own proxy? No. Oscaro blocks datacenter IPs, so the scraper uses residential exits in the shop's country by default. The traffic is small (1 to 3 MB per 1,000 products in our tests), so the proxy cost stays under a cent per 1,000 products.
How many products can I get? As many as the search matches. The site's search lists at most 1,000 results per search, so bigger searches are split by brand, part type, promotion and stock. If one brand and part type still has more than 1,000 matches after that, the run says so in its status: add a filter to get the rest.
Why is a field empty? Oscaro does not have every value for every part: some parts have no EAN, no list price or no vehicle list (universal parts and accessories, for example). Empty values are null.
Can I search by vehicle? No. Search by part name, reference or part type. Each row tells you how many vehicle types the part fits.
Can I schedule it or use the API? Yes. Schedule runs in the console to monitor prices, or start runs and read the dataset through the API.
…-c) are not supported; use a part-type page (…-g), a search or a part name instead.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.
queriesarrayOptionalPart names or references
What you would type into Oscaro's search bar, one per line: a part name such as 'plaquette de frein' (brake pads), 'disque de frein' or 'filtre à huile', or a manufacturer / OE reference such as 'GDB1330' or '0986494027'. No vehicle needed. Each line is its own search.
startUrlsarrayOptionalOscaro URLs
Oscaro product pages (…-p), part-type pages such as https://www.oscaro.com/huile-moteur-1862-g, or search result pages (…/search?q=…). oscaro.com, oscaro.es, oscaro.pt and oscaro.be links all work; the shop is taken from the link.
maxResultsintegerOptionaldefault 20Max products per search
How many products to save for each part name, reference or part-type URL. 0 means every product the search returns. Product URLs always give one product each.
countryenumOptionaldefault "fr"Shop
Which Oscaro shop to search (prices, stock and labels differ by country). URLs use the shop in the link.
Narrow the results. Leave empty to get everything the search returns.
brandstringOptionalBrands
Only parts of these brands, separated by commas, for example 'BOSCH' or 'BOSCH, VALEO, BREMBO'. Leave empty for all brands.
genartIdstringOptionalPart-type IDs
Only one exact part type, by its ID, for example 402 (brake pad set). Several IDs separated by commas work too. The genart_id field of every result holds this ID, and part-type URLs end with it (…-402-g).
availablebooleanOptionaldefault falseIn stock only
Only parts that are in stock in the selected shop.
promobooleanOptionaldefault falseOn promotion only
Only parts with a current discount.
universalbooleanOptionaldefault falseUniversal parts only
Only universal parts that fit any vehicle.
proxyobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Proxy used to reach Oscaro. Oscaro blocks datacenter IPs, so residential exits in the shop's country are the default (the traffic is small: 1 to 3 MB per 1,000 products).
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 |
|---|---|---|
| item_id | string | Oscaro article ID |
| productTitle | string | null | Product name (part type label) |
| thumbnail | string | null | Main product image URL |
| url | string | null | Product page URL |
| reference | string | null | Manufacturer reference as shown, e.g. 0 986 494 027 |
| search_reference | string | null | Reference without spaces or dashes |
| ean | string | null | EAN barcode |
| brand | string | null | Brand / manufacturer |
| brand_id | string | null | Oscaro brand ID |
| brand_logo | string | null | Brand logo URL |
| genart_id | string | null | Part-type ID (TecDoc generic article) |
| part_type | string | null | Part-type label |
| category | string | null | Top-level category |
| sub_category | string | null | Sub-category |
| price | number | null | Current price incl. VAT |
| raw_price | number | null | Price before promotion incl. VAT |
| public_price | number | null | Manufacturer list price (RRP) incl. VAT |
| consign_price | number | null | Refundable core deposit |
| currency | string | null | Currency code |
| tax_rate | number | null | VAT rate in percent |
| on_promotion | boolean | null | Discounted right now |
| promotion_percentage | number | null | Discount in percent |
| promo_start_date | string | null | Promotion start date |
| promo_end_date | string | null | Promotion end date |
| images | array | null | Image URLs |
| available | boolean | null | In stock |
| sold_as_pack | boolean | null | Sold as a set |
| boxes_count | number | null | Number of boxes |
| universal | boolean | null | Universal part (fits any vehicle) |
| vehicle_type_count | number | null | Number of vehicle types the part fits |
| equivalent_references | array | null | Cross-references: equivalent OE and aftermarket references by manufacturer |
| specs | object | null | Technical specifications (label: value) |
| market | string | null | Shop country: fr, es, pt or be |
| search_query | string | null | Search that found the product |
| source_url | string | null | Input URL that found the product |
| position | number | null | Rank in the search results |
| scraped_at | string | null | Time of scraping (UTC) |
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 |
|---|---|---|
| Product | One Oscaro car part saved to the dataset, with price, promotion, stock, brand, reference, EAN, specs and all cross-references. | $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/oscaro-scraper').call({
"queries": [
"plaquette de frein"
],
"maxResults": 20,
"proxy": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
]
}
})
// 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/oscaro-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/oscaro-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.
Search Oscaro by reference (GDB1330 and 0986494027): every matching part with price, EAN, specs and all cross-references.
Paste Oscaro product URLs to monitor exact parts: price, promotion, stock, EAN, specs and cross-references.
Search 'filtre à huile' and keep only Bosch parts that are in stock.
Search the Spanish shop: prices, stock and labels as Spanish buyers see them.
Paste an Oscaro part-type page (here: engine oil) to list its products.
A bigger search: 200 shock absorbers with prices, stock and specs.
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.