Scrape product pages on perfecthair.ch
The call that returns product pages from perfecthair.ch today, with the parameters, patterns and failure modes read off the request log since 14 Aug 2026. Last tested 6 Sep 2026.
About perfecthair.ch
perfecthair.ch describes itself as “PerfectHair: expertise in beauty & healthcare, professional products, top service. Order by 8 pm, delivered tomorrow with free shipping”.
Its home page declares 2 languages: de-ch, fr-ch.
Its sitemaps list 71,107 URLs across 8 files (google-category-sitemap, google-images-sitemap-1, google-images-sitemap-2, google-images-sitemap-3, google-product-sitemap-1, google-product-sitemap-2). 35,536 of the 35,689 dated entries changed in the last 30 days, the newest on 6 Sep 2026.
Its robots.txt names 2 sitemaps and disallows 12 paths, among them /json/, /action/, /api/.
Measured on Crawlbase
Success rate over every request from every account in August 2026: 96.0%. Patterns, countries and failures come from the request log since 14 Aug 2026; 0.0% of successful calls used the JavaScript token and the median answer took 1.6s.
Among the 23 beauty sites in the Cookbook, perfecthair.ch ranks 10 of 23 by success rate; the category median is 95.6%. Its median answer of 1.6s is faster than the category median of 2.3s. 17 of the 23 accept the plain token, this one among them.
The call
Product pages are the shape the accounts fetch most here, with the country and token that succeed most often. Replace the placeholder path with a real product URL from the site.
curl "https://api.crawlbase.com/?token=YOUR_TOKEN&url=https%3A%2F%2Fwww.perfecthair.ch%2Fexample-page"from crawlbase import CrawlingAPI api = CrawlingAPI({'token': 'YOUR_TOKEN'}) r = api.get('https://www.perfecthair.ch/example-page') html = r['body']
const { CrawlingAPI } = require('crawlbase'); const api = new CrawlingAPI({ token: 'YOUR_TOKEN' }); const r = await api.get('https://www.perfecthair.ch/example-page');
Parameters that matter
| Parameter | Set it to | Why |
|---|---|---|
country | leave unset | Most successful calls set no country (100%) and succeed at 95.8%. |
javascript | leave unset | Plain-token calls succeed at 95.8% and make up 100% of the traffic. A browser costs more and, on this site, buys nothing. |
URL patterns accounts fetch
| Pattern | Share of successes | JavaScript token | Country | Query parameters |
|---|---|---|---|---|
/{slug} | 91.0% | 0.0% | none | none |
/de/{slug}/{slug} | 9.0% | 0.0% | none | none |
Fields you get
Structured data Crawlbase found on perfecthair.ch, by page type. These are the schema.org types in the page, the fields your parser can read straight from the JSON-LD block:
- Home:
Organization - Detail page:
Product - Listing:
CollectionPage
What breaks, and the fix
Of the failures since 14 Aug 2026, the site answered:
Run it on a schedule
A catalogue refresh is a list of product URLs. Push it to the Crawler with a callback, let it pace the calls and retry what the site refuses, and read the results from Cloud Storage. The median answer on this site is 1.6s.
Questions
Do I need a browser to scrape perfecthair.ch?
No. 95.8% of plain-token calls succeed and accounts send 100% of their traffic without a browser.
How much does a perfecthair.ch page cost on Crawlbase?
1 credit without a browser. perfecthair.ch is in the standard tier.
Which country should I set for perfecthair.ch?
None is needed: most successful calls leave it unset.
Other pages on perfecthair.ch
Pages perfecthair.ch lists in its own sitemaps, fetched by Crawlbase on 6 Sep 2026 and verified in 2 consecutive runs. Each row is the cheapest call that returned the page with its content.
| Page | Example | Token | Country | Median |
|---|---|---|---|---|
Home/Structured data: Organization | perfecthair.ch/ | Plain | none | 2.6s |
Detail page/{slug}Structured data: Product | none | JavaScript | none | 22.1s |
Listing/{slug}/{slug}/{slug}Structured data: CollectionPage | none | Plain | none | 3.9s |