Async Rust client for the auto-api.com car listings API. Built on reqwest + serde.
Covers 8 marketplaces: encar, mobile.de, autoscout24, che168, dongchedi, guazi, dubicars, dubizzle. Offer data comes back as serde_json::Value since each source has its own schema.
Add to your Cargo.toml:
[dependencies]
auto-api-client = "1.0"use auto_api_client::{Client, OffersParams};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new("your-api-key");
// ...
Ok(())
}let filters = client.get_filters("encar").await?;let offers = client.get_offers("mobilede", &OffersParams {
page: 1,
brand: Some("BMW".into()),
year_from: Some(2020),
..Default::default()
}).await?;
// Pagination
println!("{}", offers.meta.page);
println!("{}", offers.meta.next_page);let offer = client.get_offer("encar", "40427050").await?;let change_id = client.get_change_id("encar", "2025-01-15").await?;
let changes = client.get_changes("encar", change_id).await?;
// Next batch
let next_batch = client.get_changes("encar", changes.meta.next_change_id).await?;let info = client.get_offer_by_url(
"https://encar.com/dc/dc_cardetailview.do?carid=40427050"
).await?;Since each marketplace returns different fields, offer data is serde_json::Value. You can deserialize into OfferData or your own struct:
use auto_api_client::OfferData;
for item in &offers.result {
let d: OfferData = serde_json::from_value(item.data.clone())?;
println!("{} {} {} — ${}", d.mark, d.model, d.year, d.price);
}use auto_api_client::{Client, OffersParams, Error};
match client.get_offers("encar", &OffersParams { page: 1, ..Default::default() }).await {
Ok(offers) => println!("Got {} offers", offers.result.len()),
Err(Error::Auth { status_code, message }) => {
// 401/403 — invalid API key
eprintln!("Auth error {}: {}", status_code, message);
}
Err(Error::Api { status_code, message, body }) => {
// Any other API error
eprintln!("API error {}: {}", status_code, message);
}
Err(Error::Network(e)) => {
// reqwest/network error
eprintln!("Network error: {}", e);
}
}| Source | Platform | Region |
|---|---|---|
encar |
encar.com | South Korea |
mobilede |
mobile.de | Germany |
autoscout24 |
autoscout24.com | Europe |
che168 |
che168.com | China |
dongchedi |
dongchedi.com | China |
guazi |
guazi.com | China |
dubicars |
dubicars.com | UAE |
dubizzle |
dubizzle.com | UAE |
| Language | Package |
|---|---|
| PHP | autoapi/client |
| TypeScript | @autoapicom/client |
| Python | autoapicom-client |
| Go | auto-api-go |
| C# | AutoApi.Client |
| Java | auto-api-client |
| Ruby | auto-api-client |