encar-api-client — Encar API client for Python
encar-api-client gives you South Korean used-car listings from Encar as clean JSON through the apiauto.space
REST API, without writing or maintaining a scraper. Search by make, model, year, price and mileage, page
through the whole catalog, fetch one listing by its number and follow a feed of new cars, cars taken off sale
and price changes.
It is a thin layer over the general apiauto-space client with
the market preset to kr, plus types for the Encar-only fields. It comes from the apiauto.space team;
the project is not affiliated with Encar or SK Encar.
- Sync
ClientandAsyncClient, retries on 429 and 5xx, one exception class per API error car("42793038")takes the Encar listing number as well as the record idEncarRawtypes for the Encar-only fields incar["raw"]- Python 3.10+,
py.typed, checked withmypy --strict
Install
pip install encar-api-client
The module you import is encar_api.
Get a key
Open the Telegram bot @apiautospace_bot and take a free demo key: one day, 100 data requests, up to 20 cars per request. Paid plans are on the pricing page.
Save the key in the APIAUTO_KEY environment variable — the client reads it from there:
export APIAUTO_KEY="your-key"
Keep the key on your server: the API does not accept browser requests.
Quick start
import encar_api
with encar_api.Client() as client: # reads APIAUTO_KEY
page = client.cars(brand="Hyundai", year_min=2020, limit=20)
for car in page["items"]:
print(car["id"], car["title"], car["price"]["amount"], car["price"]["currency"])
one = client.car("42793038") # a listing number or "encar:42793038"
print(one["listing_url"], one["photos"][:1])
A record looks like this (shortened; real values from the catalog):
{
"id": "encar:42793038",
"market": "kr",
"source": "encar",
"source_id": "42793038",
"title": "2021 BMW 1 Series (F40) 118d M Sport",
"brand": "BMW",
"model": "1 Series (F40)",
"year": 2021,
"mileage_km": 122866,
"fuel": "diesel",
"transmission": null,
"body_type": null,
"price": {
"amount": "17990000.00",
"currency": "KRW"
},
"price_usd": "13265.53",
"location": {
"country": "KR",
"region": "Gyeonggi",
"city": null
},
"listing_url": "https://fem.encar.com/cars/detail/42793038",
"is_active": true,
"first_seen_at": "2026-09-23T11:36:05.145090Z",
"photos": [
"https://api.apiauto.space/img/encar:42793038/1.jpg?exp=...&sig=..."
],
"raw": {
"badge": "118d M 스포츠",
"sell_type": "normal",
"office_city": "경기",
"form_year": "202110"
}
}
Every record has the same keys as in the other apiauto.space markets; a value the source does not provide is
None. Prices are decimal strings in KRW, price_usd is converted at the ECB daily rate.
Methods
| Method | What it does | Quota |
|---|---|---|
cars(**filters) |
One page of Encar cars: brand, model, year_min, year_max, price_min, price_max, mileage_max, fuel, body_type, sort, limit, cursor |
Cars returned |
iter_cars(max_items=None, **filters) |
Every matching car, page after page | Cars returned |
car(listing) |
One car by listing number or id, including cars taken off sale in the last 14 days | 1 record |
changes(since, type=None) / iter_changes(...) |
Feed of added, disappeared, price_drop, price_up events |
Events returned |
brands() / models(brand) |
Makes and models with car counts | Free |
status() |
Plan access, data age and the number of active cars of the market | Free |
usage() |
Your plan, its term and the quota spent | Free |
The general client is at client.core for anything else. Errors are the apiauto exceptions, re-exported
here: QuotaExceededError, RateLimitError, NotFoundError, AuthenticationError and the rest.
Encar-only fields
from encar_api import raw
extra = raw(car) # typed as EncarRaw
print(extra.get("source_values"))
EncarRaw lists the keys with comments; every key is optional, so read them with .get.
Links
- Encar API on apiauto.space and the API documentation
apiauto-space: the general client for all markets- Clients for the other sources:
che168-api,copart-api,iaai-api - Examples in curl, Python, JavaScript and PHP
- The JavaScript version of this client:
encar-api-clienton npm
License
MIT. Encar is a trademark of its owner; it is named here only to say which listings the client returns.
Metadata
Release files for encar-api-client 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| encar_api_client-0.1.0.tar.gz | 10.0 kB | With provenance | Details for encar_api_client-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| encar_api_client-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for encar_api_client-0.1.0-py3-none-any.whl |
Total release size: 19.3 kB
Release files / encar_api_client-0.1.0.tar.gz
| Download URL | encar_api_client-0.1.0.tar.gz |
|---|---|
| Size | 10.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2b901bcd5abc14604178e43fca6de2f39591b21319c2e9002c8065788abee669
|
|
BLAKE2b-256 checksum How to use checksums |
7114aefe0acbe049af5657ac4f981de7b42c776d353e866524cc4fe20b26fdda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.
Transparency logRelease files / encar_api_client-0.1.0-py3-none-any.whl
| Download URL | encar_api_client-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b24263f4b4df9b0807931a3abeb693a4cc21fe4b5582abf98aa26af2cbedf51b
|
|
BLAKE2b-256 checksum How to use checksums |
b6e37c62dc34162d7415b1e9af376f4303e1d53013bd694e48aa59f9c366b173
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.
Transparency logSecurity for encar-api-client 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for encar_api_client-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.