Category: Scraping use cases

Scraping AutoScout24: How to Extract Car Listings Without Getting Blocked

6 mins read Created Date: February 06, 2025   Updated Date: February 06, 2025

As of February 2025, AutoScout24 hosts over 150,000 car listings and partners with 43,000+ dealerships, making it one of the most valuable platforms for vehicle pricing and market analysis in Europe.

Whether you’re tracking price trends, comparing offers, or analyzing dealership data, scraping AutoScout24 can unlock huge business opportunities.

And if you’ve tried scraping AutoScout24, you’ve probably hit a wall.

The site actively prevents automated data collection using Akamai bot protection and IP-based restrictions, making traditional scraping techniques ineffective.

That doesn’t mean it’s impossible.

With the right approach, you can bypass these roadblocks and access the data you need—without getting blocked. In this guide, we’ll break down why AutoScout24 is difficult to scrape, what protections it uses, and how to extract car listings efficiently using Scrape.do.

Why Scraping AutoScout24 Is Difficult

AutoScout24 has implemented multiple layers of security to prevent automated data extraction. These protections make traditional scraping techniques unreliable and often result in blocked requests.

1. Akamai Bot Protection

AutoScout24 relies on Akamai’s bot detection system, which is designed to identify and block scrapers before they can access valuable data.

  • It uses browser fingerprinting to detect non-human requests.
  • JavaScript challenges verify if a page is being accessed by a real user.
  • Behavior tracking monitors scrolling, mouse movements, and interactions.

If your scraper doesn’t mimic real user behavior, it will likely be blocked within a few requests.

2. IP-Based Restrictions

AutoScout24 tracks IP addresses to detect suspicious activity and enforce geo-restrictions.

  • Requests from datacenter proxies are often blocked immediately.
  • High-frequency requests from the same IP trigger rate limits.
  • Some listings are region-locked, meaning certain data is only accessible from specific countries.

These security measures make it difficult to scrape AutoScout24 using basic requests or simple proxy rotation.

How Scrape.do Bypasses These Challenges

Scrape.do is designed to handle Akamai bot detection, IP tracking, and geo-restrictions, allowing uninterrupted access to AutoScout24’s listings.

Akamai Bypass

AutoScout24’s bot protection relies on browser fingerprinting, behavior tracking, and JavaScript challenges. Scrape.do automatically handles these by:

Executing JavaScript to pass browser verification.
Mimicking real user behavior by rotating headers, cookies, and TLS fingerprints.
Preventing detection by dynamically adjusting request timing and patterns.

Geo-Targeted IPs

AutoScout24 enforces region-based access and blocks requests from datacenter proxies. Scrape.do ensures access by:

Routing requests through Switzerland-based residential and ISP proxies.
Maintaining session persistence to avoid tracking inconsistencies.
Bypassing rate limits with smart request pacing.

With these optimizations, Scrape.do ensures smooth, unblocked access to AutoScout24’s data even at scale.

Extracting Data from AutoScout24 Without Getting Blocked

Now that we have bypassed AutoScout24’s protections, we’ll extract the car name and price from a real listing.

Prerequisites

Before making any requests, install the necessary dependencies if you haven’t already.

We’ll be using requests to send HTTP requests and BeautifulSoup to parse the HTML. Install them using:

pip install requests beautifulsoup4

You’ll also need an API key from Scrape.do, which you can get by signing up at Scrape.do for free.

Next, we need a target page to scrape.

For this guide, we’ll be working with a listing for the perhaps most classic sportscar, Porsche 911 Coupé 3.8 Turbo PDK.

Sending a Request and Verifying Access

First, we’ll send a request through Scrape.do to ensure we can access the page without getting blocked.

If successful, we should receive a 200 OK response, confirming that we’ve bypassed AutoScout24’s protections.

import requests
import urllib.parse

# Our token provided by Scrape.do
token = "<your_token>"

# Target AutoScout24 listing URL
target_url = urllib.parse.quote_plus("https://www.autoscout24.ch/de/d/porsche-911-coupe-38-turbo-pdk-12188643")

# Optional parameters
render = "true"
geo_code = "ch"

# Scrape.do API endpoint
url = f"https://api.scrape.do/?token={token}&url={target_url}&geoCode={geo_code}&render={render}"

# Send the request
response = requests.request("GET", url)

# Print response status
print(response)

Expected Output:

<Response [200]>

If the request is successful, we can move on to extracting the car name.

💡 If you’re not getting 200 OK, try adding &super=true paramater to the end of your Scrape.do API call, which will enable residential and mobile proxies that can usually bypass any WAF with ease but will cost more credits.

Extracting the Car Name

Now that we have confirmed access to the page, we can extract the car name from the listing.

The product name is stored inside 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 AutoScout24 listing URL
target_url = urllib.parse.quote_plus("https://www.autoscout24.ch/de/d/porsche-911-coupe-38-turbo-pdk-12188643")

# Optional parameters
render = "true"
geo_code = "ch"

# Scrape.do API endpoint
url = f"https://api.scrape.do/?token={token}&url={target_url}&geoCode={geo_code}&render={render}"

# Send the request
response = requests.request("GET", url)

# Parse the response using BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")

# Extract car name
title = soup.find("h1").text.strip()

print("Car Name:", title)

Expected Output:

Car Name: PORSCHE 911 Coupé 3.8 Turbo PDK

By targeting the first <h1> tag, we efficiently extract the car model name without needing to specify class attributes.

Extracting the Car Price

With the car name successfully extracted, the next step is to retrieve the listing price, which is the most important information on this page.

Initially, I’ve attempted to locate the price using a specific <p> tag with a predefined class. However, AutoScout24 dynamically assigns class names, which can change over time, making class-based extraction unreliable.

Instead, I’ve taken a more flexible approach by searching for the price text directly. Since all car prices on AutoScout24 include “CHF” followed by a number, we can use regular expressions (re module) to locate and extract it anywhere in the page content.

from bs4 import BeautifulSoup
import requests
import urllib.parse
import re

# Our token provided by Scrape.do
token = "<your_token>"

# Target AutoScout24 listing URL
target_url = urllib.parse.quote_plus("https://www.autoscout24.ch/de/d/porsche-911-coupe-38-turbo-pdk-12188643")

# Optional parameters
render = "true"
geo_code = "ch"

# Scrape.do API endpoint
url = f"https://api.scrape.do/?token={token}&url={target_url}&geoCode={geo_code}&render={render}"

# Send the request
response = requests.request("GET", url)

# Parse the response using BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")

# Extract car name
title = soup.find("h1").text.strip()

# Search for the first occurrence of "CHF" followed by a number
match = re.search(r"CHF\s([\d'.,]+)", soup.get_text())

# Extract and clean the price if found
price = match.group(0).replace("\xa0", " ") if match else "Price not found"



print("Car Name:", title)
print("Car Price:", price)

Why does this work?

Avoids dependency on class names that might change dynamically.
Searches the entire page text, ensuring the price is found even if the structure varies.
Uses regular expressions (re) to precisely extract numbers that follow “CHF”.

And here’s the expected output:

Car Name: PORSCHE 911 Coupé 3.8 Turbo PDK
Car Price: CHF 106,890.-

This approach ensures that even if AutoScout24 updates its HTML structure, the price extraction will continue working reliably.

Conclusion

Scraping AutoScout24 is difficult due to Akamai bot protection and dynamic HTML structures, which block traditional scrapers and make extracting data unreliable.

We successfully extracted the car name and price by bypassing these obstacles with Scrape.do. Instead of relying on unstable class names, we used regular expressions to locate the price anywhere on the page, ensuring a more flexible and robust approach.

If you need to scrape AutoScout24 without getting blocked, Scrape.do makes it simple.

Get 1000 free API calls and start now. 🚀


Onur Mese

Onur Mese

Full Stack Developer


Hey, there! As a true data-geek working in the software department, getting real-time data for the companies I work for is really important: It created valuable insight. Using IP rotation, I recreate the competitive power for the brands and companies and get super results. I’m here to share my experiences!