Scraping Fnac: How to Extract Product Prices Without Getting Blocked
Fnac is a leading retailer in France and Spain, offering everything from electronics and books to household appliances.
And if you’ve tried scraping Fnac for product prices and stock availabilty**, you’ve probably been blocked.**
The site actively prevents automated access through regional restrictions and custom WAF rules, making it difficult to retrieve structured data.
But there’s a way around it.
In this guide, we’ll break down why Fnac is difficult to scrape, how its defenses work, and how to bypass them using Scrape.do to extract product information without getting blocked.
Why Scraping Fnac Is Difficult
Fnac, like many large e-commerce websites, has implemented multiple layers of security to prevent automated data collection.
These protections make traditional scraping techniques unreliable and often result in blocked requests.
1. Regional Restrictions
Fnac enforces strict geo-blocking, meaning certain content is only accessible from specific countries. If your requests originate from an unsupported region, you may see incomplete data or be denied access altogether.
- Pages may redirect users based on location.
- Some product listings vary by country, requiring different approaches depending on the target market.
- Requests from IPs outside France or Spain often receive 403 Forbidden errors.
2. Custom WAF Rules
Fnac uses a custom Web Application Firewall (WAF) to detect and block scrapers. Unlike standard WAF solutions, Fnac’s security rules are tailored for its platform and include:
- Behavior tracking to detect non-human interaction patterns.
- Session-based fingerprinting that correlates multiple requests from the same scraper.
- Aggressive rate-limiting that blocks repeated requests within a short time frame.
These protections make it difficult to scrape Fnac without advanced request management techniques.
How Scrape.do Bypasses These Challenges
Scrape.do is designed to handle geo-restrictions, WAF defenses, and session tracking, allowing seamless access to Fnac’s data without being blocked.
Geo-targeted Proxies
Fnac enforces strict regional access, making it difficult to scrape without an IP from an approved location.
✅ Scrape.do automatically routes requests through France- and Spain-based residential and ISP proxies, ensuring requests appear as legitimate user traffic.
Advanced Session Management
Many blocks occur because Fnac tracks browsing sessions, flagging scrapers that repeatedly access product pages.
✅ Scrape.do maintains persistent session handling, preventing Fnac from detecting bot-like behavior across multiple requests.
Dynamic Request Optimization
Fnac’s custom WAF relies on fingerprinting techniques to detect scrapers based on request headers, TLS fingerprints, and browsing patterns.
Scrape.do dynamically adjusts:
- Headers and user agents to mimic real browser requests.
- TLS fingerprints to match legitimate users.
- Request timing to prevent triggering rate limits.
With these optimizations, Fnac can be scraped without triggering 403 errors, redirects, or temporary bans.
Extracting Data from Fnac Without Getting Blocked
Now that we have a strategy to bypass Fnac’s protections, we’ll start extracting product data.
First, we need to ensure our request reaches the page successfully and returns a 200 OK response.
1. Prerequisites
Before scraping Fnac, install the required dependencies if you haven’t already:
pip install requests beautifulsoup4
You’ll also need an API key from Scrape.do, which you can obtain by signing up for FREE at Scrape.do.
We’ll scrape product information from this iPhone 16 model.
2. Sending a Request and Verifying Access
import requests
import urllib.parse
# Our token provided by Scrape.do
token = "<your_token>"
# Target Fnac product URL
target_url = urllib.parse.quote_plus("https://www.fnac.com/Apple-iPhone-16-Pro-Max-6-9-5G-256-Go-Double-SIM-Noir-Titane/a17312773/w-4")
# Optional parameters
render = "true"
geo_code = "fr"
super_mode = "true"
# Scrape.do API endpoint
url = f"https://api.scrape.do/?token={token}&url={target_url}&geoCode={geo_code}&super={super_mode}"
# Send the request
response = requests.request("GET", url)
# Print response status
print(response)
Here’s the expected output:
<Response [200]>
If the request is successful, we can move on to extracting the product name.
Extracting the Product Name
The product name is stored in an <h1>
tag, making it easy to locate and extract using BeautifulSoup
.
from bs4 import BeautifulSoup
import requests
import urllib.parse
# Our token provided by Scrape.do
token = "<your_token>"
# Target Fnac product URL
target_url = urllib.parse.quote_plus("https://www.fnac.com/Apple-iPhone-16-Pro-Max-6-9-5G-256-Go-Double-SIM-Noir-Titane/a17312773/w-4")
# Optional parameters
render = "true"
geo_code = "fr"
super_mode = "true"
# Scrape.do API endpoint
url = f"https://api.scrape.do/?token={token}&url={target_url}&geoCode={geo_code}&super={super_mode}"
# Send the request
response = requests.request("GET", url)
# Parse the response using BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")
# Extract product title
title = soup.find("h1").text.strip()
print("Product Name:", title)
Expected output:
Product Name: Apple iPhone 16 Pro Max 6,9" 5G 256 Go Double SIM Noir Titane
Now that we have the product name, we’ll extract the price in the next section.
Extracting the Product Price
With the product name successfully extracted, we now need to get the price. The price is located inside a <span>
tag with the class f-faPriceBox__price userPrice checked
, as seen in the inspected HTML.
<----- Previous section until the Print command ----->
# Extract product price
price = soup.find("span", class_="f-faPriceBox__price userPrice checked").text.strip()
print("Product Price:", price)
Expected output:
Product Price: 1 431 €
If the extracted value contains unwanted spaces (1 431 €
), you can clean it up:
price = price.replace("\xa0", " ") # Replace non-breaking space
Congratulations 🎉, you are now able to extract product data from Fnac without any blocks!
Conclusion
Scraping Fnac is difficult due to geo-restrictions and custom WAF rules, but not impossible.
Need to scrape Fnac?
Scrape.do makes it simple.