AutoScout24 Parser API Reference
Complete API documentation with detailed endpoints, parameters, response formats, and code examples for extracting European automotive data.
- Complete endpoint documentation with all parameters and options
- Multiple code examples in JavaScript, Python, and cURL
- Error handling guides with common issues and solutions
- Rate limiting information for all subscription plans
- Real-world examples for common use cases
🔐 Authentication
All API requests require authentication using your API key in the Authorization header.
:::
info API Key Format
Your API key will look like this: autoscout24_parser_sk_1234567890abcdef1234567890abcdef
- Prefix:
autoscout24_parser_sk_
- Length: 64 characters
- Format: Hexadecimal string
- Scope: AutoScout24 parser access only :::
Authorization: Bearer autoscout24_parser_sk_1234567890abcdef1234567890abcdef
📡 Base URL
https://api.carapis.com/v1/parsers/autoscout24
🚀 Core Endpoints
Search Vehicle Listings
Search and filter vehicle listings from AutoScout24 across European markets.
Endpoint: POST /search
- Multi-country search across 20+ European countries
- Advanced filtering by make, model, price, location
- Flexible pagination with customizable limits
- Comprehensive data fields including pricing and specifications
- Real-time extraction with 99.9% success rate
Request Parameters
{
"query": "string",
"country": "string",
"year_from": "number",
"year_to": "number",
"price_min": "number",
"price_max": "number",
"fuel_type": "string",
"transmission": "string",
"body_type": "string",
"location": "string",
"mileage_max": "number",
"limit": "number",
"page": "number"
}
Search Parameters
Parameter | Type | Description | Example |
---|---|---|---|
query | string | Search query (make, model, keywords) | "BMW X5", "Mercedes C-Class" |
country | string | Target country code | "DE", "IT", "FR", "ES" |
year_from | number | Minimum year | 2018 |
year_to | number | Maximum year | 2023 |
price_min | number | Minimum price (EUR) | 30000 |
price_max | number | Maximum price (EUR) | 80000 |
fuel_type | string | Fuel type | "diesel", "gasoline", "hybrid", "electric" |
transmission | string | Transmission type | "automatic", "manual" |
body_type | string | Body type | "suv", "sedan", "hatchback", "wagon" |
location | string | City or region | "Munich", "Berlin", "Milan" |
mileage_max | number | Maximum mileage (km) | 50000 |
limit | number | Results per page (1-100) | 50 |
page | number | Page number | 1 |
Response Format
{
"success": true,
"data": {
"listings": [
{
"id": "string",
"title": "string",
"price": {
"amount": "number",
"currency": "string",
"formatted": "string"
},
"specifications": {
"year": "number",
"mileage": "number",
"fuel_type": "string",
"transmission": "string",
"engine_size": "string",
"power": "string"
},
"location": {
"city": "string",
"country": "string",
"coordinates": {
"lat": "number",
"lng": "number"
}
},
"dealer": {
"name": "string",
"rating": "number",
"certified": "boolean"
},
"features": ["string"],
"images": ["string"],
"url": "string",
"extracted_at": "string"
}
],
"total_count": "number",
"search_metadata": {
"query": "string",
"country": "string",
"filters_applied": "object"
}
}
}
Example Request
curl -X POST "https://api.carapis.com/v1/parsers/autoscout24/search" \
-H "Authorization: Bearer autoscout24_parser_sk_1234567890abcdef1234567890abcdef" \
-H "Content-Type: application/json" \
-d '{
"query": "BMW X5 2020",
"country": "DE",
"max_price": 50000,
"fuel_type": "diesel",
"location": "Munich"
}'
Extract Vehicle Details
Get detailed information for a specific vehicle listing.
Endpoint: GET /extract/\{vehicle_id\}
- Complete vehicle specifications with all available data
- High-resolution images and media content
- Dealer information with contact details
- Price history and market analysis
- Vehicle history and condition reports
Request Parameters
Parameter | Type | Description |
---|---|---|
vehicle_id | string | AutoScout24 vehicle ID |
Response Format
{
"success": true,
"data": {
"vehicle": {
"id": "string",
"title": "string",
"description": "string",
"price": {
"amount": "number",
"currency": "string",
"formatted": "string",
"negotiable": "boolean",
"price_history": [
{
"date": "string",
"amount": "number"
}
]
},
"specifications": {
"make": "string",
"model": "string",
"year": "number",
"trim": "string",
"engine": "string",
"transmission": "string",
"mileage": "number",
"fuel_type": "string",
"body_type": "string",
"color": "string",
"power": "string",
"torque": "string",
"consumption": "string"
},
"features": ["string"],
"images": [
{
"url": "string",
"alt": "string",
"type": "string"
}
],
"dealer": {
"name": "string",
"rating": "number",
"reviews": "number",
"certified": "boolean",
"phone": "string",
"email": "string",
"address": "string",
"website": "string"
},
"location": {
"city": "string",
"region": "string",
"country": "string",
"coordinates": {
"lat": "number",
"lng": "number"
}
},
"history": {
"accident_free": "boolean",
"owners": "number",
"service_history": "boolean",
"warranty": "string"
},
"url": "string",
"extracted_at": "string"
}
}
}
Get Market Statistics
Retrieve market statistics and insights for specific criteria.
Endpoint: POST /statistics
- Price distribution analysis across different segments
- Market share data for brands and models
- Trend analysis for pricing and demand patterns
- Regional market analysis for European countries
- Seasonal patterns and market fluctuations
Request Parameters
{
"country": "string",
"make": "string",
"model": "string",
"year_from": "number",
"year_to": "number",
"metrics": ["string"]
}
Available Metrics
price_distribution
- Price range distributionmarket_share
- Brand/model market sharetrends
- Price and demand trendsregional_analysis
- Regional market analysisseasonal_patterns
- Seasonal market patterns
Response Format
{
"success": true,
"data": {
"statistics": {
"total_listings": "number",
"average_price": "number",
"price_range": {
"min": "number",
"max": "number",
"median": "number"
},
"market_share": [
{
"brand": "string",
"percentage": "number",
"count": "number"
}
],
"trends": {
"price_trend": "string",
"demand_trend": "string",
"inventory_trend": "string"
}
},
"metadata": {
"generated_at": "string",
"data_freshness": "string"
}
}
}
Search Dealers
Search for dealer information and inventory.
Endpoint: POST /dealers/search
- Comprehensive dealer profiles with ratings and verification
- Inventory counts and specialization information
- Contact details and website information
- Geographic filtering by city and country
- Brand specialization data
Request Parameters
{
"country": "string",
"city": "string",
"brand": "string",
"rating_min": "number",
"limit": "number"
}
Response Format
{
"success": true,
"data": {
"dealers": [
{
"id": "string",
"name": "string",
"city": "string",
"country": "string",
"rating": "number",
"reviews": "number",
"certified": "boolean",
"phone": "string",
"website": "string",
"inventory_count": "number",
"specialties": ["string"]
}
],
"pagination": {
"total": "number",
"page": "number",
"per_page": "number"
}
}
}
🔧 Advanced Endpoints
Batch Search
Search for multiple criteria in a single request.
Endpoint: POST /batch-search
- Efficient processing of multiple searches
- Reduced API calls for complex workflows
- Concurrent execution with configurable limits
- Cost optimization for large-scale operations
Request Parameters
{
"searches": [
{
"query": "string",
"country": "string",
"filters": "object"
}
],
"batch_options": {
"concurrent": "number",
"delay": "number"
}
}
Real-time Monitoring
Set up real-time monitoring for specific criteria.
Endpoint: POST /monitor
- Webhook URL must be publicly accessible
- HTTPS required for security
- Rate limiting applies to webhook calls
- Monitoring limits based on subscription plan
Request Parameters
{
"query": "string",
"country": "string",
"webhook_url": "string",
"conditions": {
"price_change": "number",
"new_listings": "boolean",
"inventory_change": "number"
}
}
📊 Response Codes
Code | Description | Action Required |
---|---|---|
200 | Success | None - data returned successfully |
400 | Bad Request - Invalid parameters | Check request format and parameters |
401 | Unauthorized - Invalid API key | Verify API key and permissions |
403 | Forbidden - Insufficient permissions | Upgrade subscription or contact support |
429 | Too Many Requests - Rate limit exceeded | Wait or implement exponential backoff |
500 | Internal Server Error | Retry or contact support |
503 | Service Unavailable | Check service status and retry |
⚡ Rate Limits
Plan | Requests per Minute | Requests per Hour | Concurrent Requests |
---|---|---|---|
Free | 10 | 100 | 2 |
Basic | 60 | 1,000 | 5 |
Pro | 300 | 10,000 | 20 |
Enterprise | Custom | Custom | Custom |
🔍 Error Handling
Error Response Format
{
"success": false,
"error": {
"code": "string",
"message": "string",
"details": "object"
}
}
Common Error Codes
Code | Description | Solution |
---|---|---|
INVALID_API_KEY | API key is invalid or expired | Check key format and validity |
RATE_LIMIT_EXCEEDED | Rate limit exceeded | Wait or upgrade subscription plan |
INVALID_PARAMETERS | Invalid request parameters | Check parameter syntax and values |
EXTRACTION_FAILED | Data extraction failed | Retry or contact technical support |
COUNTRY_NOT_SUPPORTED | Country not supported | Use supported European countries |
📝 Code Examples
JavaScript
const axios = require('axios');
const apiKey = 'autoscout24_parser_sk_1234567890abcdef1234567890abcdef';
const baseURL = 'https://api.carapis.com/v1/parsers/autoscout24';
// Search vehicles with error handling
async function searchVehicles() {
try {
const response = await axios.post(
`$\{baseURL\}/search`,
{
query: 'BMW X5 2020',
country: 'DE',
price_max: 50000,
fuel_type: 'diesel',
},
{
headers: {
Authorization: `Bearer $\{apiKey\}`,
'Content-Type': 'application/json',
},
},
);
return response.data;
} catch (error) {
console.error('Error:', error.response?.data || error.message);
throw error;
}
}
// Get market statistics
async function getMarketStats() {
try {
const response = await axios.post(
`$\{baseURL\}/statistics`,
{
country: 'DE',
make: 'BMW',
metrics: ['price_distribution', 'market_share'],
},
{
headers: {
Authorization: `Bearer $\{apiKey\}`,
'Content-Type': 'application/json',
},
},
);
return response.data;
} catch (error) {
console.error('Error:', error.response?.data || error.message);
throw error;
}
}
Python
import requests
import time
api_key = 'autoscout24_parser_sk_1234567890abcdef1234567890abcdef'
base_url = 'https://api.carapis.com/v1/parsers/autoscout24'
def search_vehicles():
headers = {
'Authorization': f'Bearer \{api_key\}',
'Content-Type': 'application/json'
}
data = {
'query': 'BMW X5 2020',
'country': 'DE',
'price_max': 50000,
'fuel_type': 'diesel'
}
try:
response = requests.post(f'\{base_url\}/search',
json=data, headers=headers)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f'Error: \{e\}')
return None
def get_market_statistics():
headers = {
'Authorization': f'Bearer \{api_key\}',
'Content-Type': 'application/json'
}
data = {
'country': 'DE',
'make': 'BMW',
'metrics': ['price_distribution', 'market_share']
}
try:
response = requests.post(f'\{base_url\}/statistics',
json=data, headers=headers)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f'Error: \{e\}')
return None
# Rate limiting helper
def safe_request(func, max_retries=3):
for attempt in range(max_retries):
try:
return func()
except requests.exceptions.HTTPError as e:
if e.response.status_code == 429:
wait_time = 2 ** attempt
print(f'Rate limited, waiting \{wait_time\} seconds...')
time.sleep(wait_time)
else:
raise e
return None
cURL
#!/bin/bash
API_KEY="autoscout24_parser_sk_1234567890abcdef1234567890abcdef"
BASE_URL="https://api.carapis.com/v1/parsers/autoscout24"
# Search vehicles
search_vehicles() {
curl -X POST "$\{BASE_URL\}/search" \
-H "Authorization: Bearer $\{API_KEY\}" \
-H "Content-Type: application/json" \
-d '{
"query": "BMW X5 2020",
"country": "DE",
"price_max": 50000,
"fuel_type": "diesel"
}'
}
# Get market statistics
get_statistics() {
curl -X POST "$\{BASE_URL\}/statistics" \
-H "Authorization: Bearer $\{API_KEY\}" \
-H "Content-Type: application/json" \
-d '{
"country": "DE",
"make": "BMW",
"metrics": ["price_distribution", "market_share"]
}'
}
# Extract vehicle details
get_vehicle_details() {
local vehicle_id=$1
curl -X GET "$\{BASE_URL\}/extract/$\{vehicle_id\}" \
-H "Authorization: Bearer $\{API_KEY\}"
}
🔗 SDKs and Libraries
- JavaScript/Node.js:
@carapis/autoscout24-parser
- Python:
carapis-autoscout24-parser
- PHP:
carapis/autoscout24-parser
- Java:
com.carapis:autoscout24-parser
- C#:
Carapis.AutoScout24Parser
- Ruby:
carapis-autoscout24-parser
- Go:
github.com/carapis/autoscout24-parser
- Rust:
carapis-autoscout24-parser
📞 Support & Resources
- Documentation - Complete API documentation
- Support - Technical assistance and troubleshooting
- Status - Real-time API status and uptime
- Community - Connect with other developers
- Examples - Code examples and tutorials
🚀 Next Steps
- Get Your API Key - Sign up and get started
- Quick Start Guide - First API call in minutes
- Market Analysis - Understand European market
- FAQ - Common questions and solutions
Start extracting European automotive data with our comprehensive AutoScout24 parser API. Get real-time access to vehicle listings, market statistics, and dealer information across 20+ countries.