# Autohome Scraper (Chinese car platform) (`crawlerbros/autohome-scraper`) Actor

Scrape autohome.com.cn - one of China's largest car platforms. Browse car series by brand, fetch series details. Emits model name, price range, class, per-trim models (drivetrain, gearbox), rating and URLs. No login required.

- **URL**: https://apify.com/crawlerbros/autohome-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, E-commerce, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Autohome Scraper

Scrape [autohome.com.cn](https://www.autohome.com.cn/) — one of China's largest car platforms (汽车之家).

### Modes

| Mode | Description |
|---|---|
| `byBrand` (default) | Browse all car series for a brand letter (A-Z) |
| `bySeriesId` | Fetch one car series detail page per series ID/URL |

### Filters

`minPrice` / `maxPrice` (in 万 / 10k CNY, applied to the series starting price), `containsKeyword` (name substring), `maxItems`.

### Output fields

`seriesId`, `name`, `brandId`, `brandName`, `carClass` (轿车/SUV/MPV, from brand page), `subBrand` (一汽奥迪 etc., from brand page), `priceMinWan`, `priceMaxWan` (指导价 range), `models[]` (per-trim: name, status, drivetrain, gearbox, priceWan), `rating` (用户评分), `keywords`, `description`, `images[]`, `url`, `sourceUrl`, `scrapedAt`, `recordType`. Typed `error` records for invalid IDs / fetch failures / parse failures.

### Data Source

Brand and series pages are server-side rendered (GBK-encoded). No login, no API key.

### Anti-bot

Tier 2: `curl_cffi` chrome131 TLS impersonation, rotating browser user-agents, exponential backoff on 403/429/5xx, Apify AUTO-datacenter proxy with per-attempt session (exit-IP) rotation, direct-connection fallback after proxy retries are exhausted.

### Limits

- Prices are the official 指导价 (manufacturer suggested) range in 万 — actual dealer/transaction prices are behind the showroom API and excluded.
- `byBrand` emits the series list (name/url/carClass/subBrand) plus the per-series 指导价 for series that appear in the page's priced "main-lever" hot list (a subset of the full series list); series without a price block on the brand page carry no `priceMinWan`/`priceMaxWan`. Use `bySeriesId` for full detail incl. per-trim `models[]` and the complete price range.
- `minPrice`/`maxPrice` filter on `priceMinWan` in **both** modes and are **strict**: when a price bound is set, series without a parsed 指导价 are excluded, so the filter always reflects in the output and impossible/inverted ranges (`minPrice > maxPrice`) emit 0 records cleanly.
- `images[]` are the SSR-visible series thumbnails; full photo galleries load via JS and are excluded. Placeholder/loading graphics (`car_static`) are filtered out.
- GBK pages are decoded via charset sniffing.
- Brand letters are A-Z only — autohome removed the digit-letter (0-9) index; digit-leading brands are listed under their pinyin letter.

# Actor input Schema

## `mode` (type: `string`):

What to fetch: byBrand (series list for a brand letter) or bySeriesId (single series detail).

## `brand` (type: `string`):

First letter of the brand (A-Z), e.g. `A` for Audi, `B` for BMW.

## `seriesIds` (type: `array`):

Autohome series IDs or series page URLs, e.g. `18` or `https://car.autohome.com.cn/price/series-18.html`.

## `minPrice` (type: `number`):

Drop series whose starting price (万) is below this.

## `maxPrice` (type: `number`):

Drop series whose starting price (万) is above this.

## `containsKeyword` (type: `string`):

Only emit series whose name contains this text.

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "byBrand",
  "brand": "A",
  "seriesIds": [],
  "maxItems": 10
}
```

# Actor output Schema

## `series` (type: `string`):

Dataset containing all scraped Autohome car series records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "byBrand",
    "brand": "A",
    "seriesIds": [],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/autohome-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "byBrand",
    "brand": "A",
    "seriesIds": [],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/autohome-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "byBrand",
  "brand": "A",
  "seriesIds": [],
  "maxItems": 10
}' |
apify call crawlerbros/autohome-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/autohome-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5tvLXN6aoP2GmUpKB/builds/7J0c3dEMPQZ9kW43Q/openapi.json
