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

Scrape Galaxus and Digitec products by search term, category, brand or product URL: prices in CHF/EUR, old price and discount, availability, ratings, images, plus optional specs, stock per store, reviews and marketplace offers.
Scrape products from Galaxus and Digitec, Switzerland's largest online shops, by search term, category, brand or product URL. You get prices in CHF (or EUR on the EU shops), old price and discount, availability, ratings, category, seller and images. Turn on add-ons for full specifications, GTIN, stock per store, delivery dates, customer reviews and marketplace offers. It runs on the site's own JSON API, so 1,000 products take about 15 seconds. No login needed.
?filter=...) are applied.| Field | What it does |
|---|---|
searchQueries | Search terms, as typed into the Galaxus search box. If the site sends a term to a category (e.g. "lego"), that category is scraped. |
startUrls | Category (product type), tag, sector, brand, sale, second-hand, search or product URLs from any supported shop. |
productIds | Product numbers (the number at the end of a product URL). |
maxItems | Max products per search term or listing URL (default 20). |
site, language | Shop for search terms and IDs (default galaxus.ch) and the language of names, specs and reviews (default English). |
sortBy, minPrice, maxPrice | Order of the list and a price range in CHF/EUR. |
includeDetails | Adds description, GTIN, specs, stock, delivery dates, pickup availability, seller, price-history summary. |
maxReviewsPerProduct, reviewsSort | Adds up to N reviews per product (0 = none). |
includeOffers, maxOffersPerProduct | Adds the other sellers' offers per product. |
{
"searchQueries": ["iphone 17"],
"startUrls": [{ "url": "https://www.galaxus.ch/en/s1/producttype/smartphones-24" }],
"maxItems": 100,
"site": "galaxus.ch",
"language": "en",
"sortBy": "RELEVANCE",
"includeDetails": false,
"maxReviewsPerProduct": 0,
"includeOffers": false
}
One row per product. Main fields:
| Field | Description |
|---|---|
productId, name, brand, nameProperties, fullName | Product number and name ("Apple iPhone 17 Pro (256 GB, Deep Blue, ...)"). |
url, image, images | Product page and image URLs. |
price, priceExclVat, currency | Current price incl. VAT, excl. VAT, CHF or EUR. |
oldPrice, oldPriceType, discountPercent | Strike price, its kind (e.g. previous price, new price for second-hand) and the discount. |
availability, deliveryDays, inStock, availabilityClass | Delivery class from Galaxus (e.g. ONE_DAY, WITHIN4_DAYS). inStock is true when the item ships from stock the next working day. |
rating, reviewCount | Average star rating and number of ratings. |
category, categoryId, categoryUrl | Product type. |
offerType, sellerType, sellerId | RETAIL (sold by Galaxus/Digitec), MARKETPLACE, RESALE or REFURBISHED. |
energyLabel, pricePerUnit, pricePerUnitUnit, labels, dealItemsTotal, dealItemsSold | Energy class, unit price, labels and deal counters when the site shows them. |
searchQuery, sourceUrl, position, site, language, scrapedAt | Where the row came from. position is the rank in the list. |
With Product details: description, highlights, gtin, manufacturerNumber, categoryPath, keySpecifications, specifications, sellerName, sellerCountry, stockCount, stockStatus, deliveryFrom, deliveryTo, pickupAvailability (per store), priceHistoryType, priceFluctuation, priceLow, priceHigh, salesRankInCategory, warranty, returnPolicy, variantGroups, offersCount, otherOffers, questionsCount. With Reviews: reviews (rating, title, text, date, author, verified buyer, votes, pros, cons, images, language). With Marketplace offers: offers (seller, country, price, availability, stock, delivery dates, URL).
Example (from a real run, trimmed):
{
"productId": 61962936,
"name": "iPhone 17 Pro",
"brand": "Apple",
"fullName": "Apple iPhone 17 Pro (256 GB, Deep Blue, 6.30\", Dual SIM, 5G)",
"url": "https://www.digitec.ch/de/s1/product/apple-iphone-17-pro-256-gb-deep-blue-630-dual-sim-5g-smartphone-61962936",
"price": 1049,
"priceExclVat": 970.4,
"currency": "CHF",
"oldPrice": null,
"availability": "ONE_DAY",
"deliveryDays": 1,
"inStock": true,
"rating": 4.7,
"reviewCount": 892,
"category": "Smartphone",
"offerType": "RETAIL",
"sellerType": "Digitec",
"image": "https://www.digitec.ch/im/productimages/9/0/6/9/1/8/4/0/8/8/2/6/6/4/3/1/4/2/2/019932ab-34b6-7f88-beed-ed3c05518217",
"energyLabel": "A",
"site": "digitec.ch",
"gtin": "195950627565",
"manufacturerNumber": "MG8J4QL/A",
"keySpecifications": { "Betriebssystem": "iOS", "Bildschirmdiagonale (Zoll)": "6.30\"" },
"stockCount": 11,
"stockStatus": "IN_STOCK",
"deliveryFrom": "2026-10-19T22:00:00Z",
"pickupAvailability": [
{ "location": "Zürich", "availability": "HALF_DAY", "stockCount": 11, "expectedFrom": "2026-10-19T10:15:00Z" }
],
"priceHistoryType": "HIGH",
"priceLow": 995,
"priceHigh": 1039,
"salesRankInCategory": 2,
"reviews": [
{ "rating": 5, "title": "Zufrieden", "date": "2026-10-17T01:31:40.619Z", "verifiedBuyer": true, "pros": ["Das beste Smartphone"], "cons": ["Hoher Preis"] }
],
"offers": [
{ "sellerName": "buchmann", "sellerCountry": "CH", "offerType": "MARKETPLACE", "price": 1179.05, "currency": "CHF", "availability": "ONE_DAY", "stockCount": 1 }
]
}
Pay per result:
Example: 1,000 products from a category cost about $2.80 in result fees. With product details they cost about $4.30. Platform usage (a few seconds of compute at 256 MB and a few MB of datacenter proxy traffic) is billed separately and came to about $0.002 per 1,000 products in our test runs. Rows that fail are never saved or charged.
Is it legal to scrape Galaxus? The scraper only reads public product pages that anyone can open without an account. Check that your use of the data follows the laws that apply to you (for example data protection and database rights).
Do I need a Galaxus account or a proxy? No account is needed. The default datacenter proxy works. If the site starts refusing datacenter IPs, the run switches to residential exits in the shop's country by itself.
How many products can I get? As many as the list has. Galaxus shows at most 2,100 products per list. For bigger lists without your own price filter, the scraper collects them in price bands (a run collected 8,112 LEGO products from one category). With a price filter set, you get up to 2,100 products per list.
Why is a field empty? Fields are empty when Galaxus doesn't show them for that product (no strike price, no energy label, no reviews). Detail fields only appear when the Product details add-on is on.
What about duplicates? A product that shows up in several of your inputs is saved and charged once, under the first input that found it.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start them over the API and fetch the dataset as JSON, CSV or Excel.
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.
searchQueriesarrayOptionalSearch terms
Words to search for, exactly as you would type them into the Galaxus search box (one per line). Search terms match best in the site language you pick below. If the site sends a term straight to a category (e.g. 'lego'), that category is scraped.
startUrlsarrayOptionalGalaxus or Digitec URLs
Category (product type), tag, sector, brand, sale/second-hand, search or product pages from galaxus.ch, digitec.ch, galaxus.de, .at, .fr, .it, .nl or .be. Filters in the URL (?filter=...) are applied.
productIdsarrayOptionalProduct IDs
Galaxus/Digitec product numbers (the number at the end of a product URL, e.g. 61962936). Looked up on the site selected below.
maxItemsintegerOptionaldefault 20Max products per search or URL
How many products to collect for each search term or category/brand URL. Product URLs and IDs always return their product.
siteenumOptionaldefault "galaxus.ch"Site
Shop used for search terms and product IDs. URLs always use their own site.
languageenumOptionaldefault "en"Language
Language of product names, specs and reviews (and of your search terms). URLs with a language in their path (/de/, /fr/...) keep it. Swiss sites offer de, fr, it and en.
sortByenumOptionaldefault "RELEVANCE"Sort by
Order of the product list. Bestsellers and Newest work for categories and brands; search results fall back to relevance for them.
minPriceintegerOptionalMin price
Only products at or above this price (CHF or EUR, incl. VAT).
maxPriceintegerOptionalMax price
Only products at or below this price (CHF or EUR, incl. VAT).
includeDetailsbooleanOptionaldefault falseProduct details
Open each product page and add the description, highlights, GTIN/EAN, manufacturer number, full specifications, key specs, category path, seller, stock count, delivery dates, pickup availability per store, price-history summary, warranty and sales rank. Charged per product (see Pricing).
maxReviewsPerProductintegerOptionaldefault 0Reviews per product
Add up to this many customer reviews to each product (rating, title, text, date, pros/cons, verified buyer, votes), translated to the chosen language. 0 = no reviews. Charged per review. At most 5,000, because the reviews are stored inside the product row and one row must stay under the platform's 10 MB item size.
reviewsSortenumOptionaldefault "NEWEST"Reviews order
Which reviews come first.
includeOffersbooleanOptionaldefault falseMarketplace offers
Add the other sellers' offers for each product (seller name and country, price, availability, stock, delivery dates). Charged per offer.
maxOffersPerProductintegerOptionaldefault 10Max offers per product
Upper limit of other-seller offers added to each product. Galaxus lists a fixed set of offers per product, so a high value returns all of them.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for Galaxus and Digitec. If the site starts refusing them, the run switches to residential exits in the shop's country by itself.
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 |
|---|---|---|
| image | any | Image |
| fullName | any | Product |
| url | any | URL |
| price | any | Price |
| currency | any | Currency |
| oldPrice | any | Old price |
| discountPercent | any | Discount % |
| availability | any | Availability |
| inStock | any | In stock |
| rating | any | Rating |
| reviewCount | any | Reviews |
| brand | any | Brand |
| category | any | Category |
| sellerType | any | Seller |
| productId | any | Product ID |
| site | any | Site |
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 |
|---|---|---|
| Marketplace offer | Add-on: one other-seller offer attached to a product (seller, price, availability, delivery). | $0.0015 |
| Product | One saved Galaxus or Digitec product with price, old price, availability, rating, category, seller type and images. | $0.0028 |
| Product details | Add-on per product: description, GTIN, full specifications, stock and delivery dates, pickup availability, seller, price-history summary (only when Product details is on). | $0.0015 |
| Review | Add-on: one customer review attached to a product. | $0.0005 |
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/galaxus-scraper').call({
"searchQueries": [
"iphone 17"
],
"startUrls": [
{
"url": "https://www.galaxus.ch/en/s1/producttype/smartphones-24"
}
],
"maxItems": 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/galaxus-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/galaxus-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 Galaxus products by keyword.
Products from a Galaxus category link.
Products with full specs and customer reviews.
Brand products from Digitec sorted by lowest price.
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.