Co APIcheki.co.ke ↗
Access Cheki.co.ke vehicle listings, dealer profiles, and search filters via API. Search cars by make, price, body type, condition, and more.
What is the Co API?
The Cheki Kenya API covers 5 endpoints for querying Kenya's vehicle marketplace at cheki.co.ke. Use search_vehicles to filter listings by make, price range, body type, condition, and year, then retrieve full specs, images, seller info, and feature lists from get_vehicle_detail. Dealer discovery and search filter metadata are also available, making it straightforward to build car-search tools targeting the Kenyan automotive market.
curl -X GET 'https://api.parse.bot/scraper/6b3d916f-8450-4556-a41a-ec46d6550e45/search_vehicles?make=toyota&page=1&year_to=2027&body_type=SUVs&condition=Fresh+Import&max_price=50000000&min_price=0&year_from=1997' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace cheki-co-ke-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
Cheki Kenya API - Usage Example
Search vehicles, view full details, browse dealers, and discover available filters
on Kenya's vehicle marketplace.
"""
from parse_apis.cheki_kenya_api import Cheki, BodyType, Condition, ListingNotFound
cheki = Cheki()
# Get available search filters to discover valid makes and body types
filters = cheki.vehiclesummaries.filters()
print(f"Available makes: {len(filters.make)}")
print(f"First make: {filters.make[0].value} ({filters.make[0].label})")
# Search for Toyota SUVs with Fresh Import condition
for vehicle in cheki.vehiclesummaries.search(make="toyota", body_type=BodyType.SUVS, condition=Condition.FRESH_IMPORT, limit=3):
print(vehicle.title, vehicle.price, vehicle.condition)
print(f" Specs: {vehicle.specs.year}, {vehicle.specs.fuel_type}, {vehicle.specs.engine_size}")
# Drill into a single vehicle's full details
vehicle = cheki.vehiclesummaries.search(make="toyota", limit=1).first()
if vehicle:
full = vehicle.details()
print(full.title, full.price)
print(f" {full.specs.make} {full.specs.model} - {full.specs.transmission}, {full.specs.mileage}")
print(f" Seller: {full.seller.name}")
# Browse dealers and get profile details
dealer = cheki.dealersummaries.list(limit=1).first()
if dealer:
try:
profile = dealer.details()
print(profile.name, profile.details.member_since, profile.rating)
except ListingNotFound as exc:
print(f"Dealer not found: {exc.slug}")
print("Exercised: filters / search / details / list dealers / dealer profile")
Search for vehicles on cheki.co.ke using various filters. Returns a paginated list of vehicle cards with title, price, slug, specs, and condition. At least one filter or no filters returns all available listings. Paginates by page number.
| Param | Type | Description |
|---|---|---|
| make | string | Vehicle make/brand slug (e.g. 'toyota', 'nissan', 'bmw'). Use values from get_search_filters_metadata. |
| page | integer | Page number for pagination. |
| keyword | string | Free-text search keyword (e.g. 'Prado', 'V8'). |
| year_to | string | Maximum year of manufacture (e.g. '2025'). |
| body_type | string | Body type filter slug. Accepted values: 'SUVs', 'Saloons', 'Hatchbacks', 'Pickups', 'Station Wagons', 'Mini-Van', 'Trucks', 'Bus', 'Bike', 'Others'. |
| condition | string | Vehicle condition filter. Accepted values: 'Fresh Import', 'Locally Used', 'New'. |
| max_price | string | Maximum price in KES as a numeric string (e.g. '5000000'). |
| min_price | string | Minimum price in KES as a numeric string (e.g. '500000'). |
| year_from | string | Minimum year of manufacture (e.g. '2010'). |
{
"type": "object",
"fields": {
"page": "current page number as string",
"vehicles": "array of vehicle objects with title, price, slug, specs, and condition"
},
"sample": {
"data": {
"page": "1",
"vehicles": [
{
"slug": "toyota-passo-2019-petrol",
"price": "KES 1,100,000",
"specs": {
"year": "2019",
"fuel_type": "Petrol",
"engine_size": "1000 CC"
},
"title": "Toyota Passo 2019 Petrol",
"condition": "Fresh Import"
}
]
},
"status": "success"
}
}About the Co API
Vehicle Search and Detail
The search_vehicles endpoint accepts up to eight filter parameters — including make, min_price, max_price, condition, body_type, year_to, keyword, and page — and returns a paginated array of vehicle cards. Each card includes the listing title, price, slug, specs, and condition. Valid values for make and body_type should be sourced from get_search_filters_metadata, which returns all available filter options (makes, conditions, body types, and year ranges) with their labels and values.
Listing Detail
get_vehicle_detail takes a slug from search results and returns a structured object covering the full listing: a specs object with fields for make, model, year, fuel type, transmission, color, body style, drivetrain, engine, and mileage; an images array; a features array; a description string from the seller; a price string formatted in KES; and a seller object containing the seller's name and slug.
Dealer Directory
list_dealers returns a paginated list of registered dealers with name, slug, member_since, and a description snippet. get_dealer_profile retrieves a single dealer's full profile, including rating (integer star value or null), details.member_since, details.inventory_count where available, and a longer description. Dealer slugs from list_dealers are the required input for get_dealer_profile.
The Co API is a managed, monitored endpoint for cheki.co.ke — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cheki.co.ke changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official cheki.co.ke API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a Kenyan used-car price tracker segmented by make, year, and condition using search_vehicles
- Aggregate dealer ratings and membership tenure from get_dealer_profile to create a dealer reputation index
- Populate dynamic search filter UIs with valid make and body type values from get_search_filters_metadata
- Monitor fresh-import vs. locally-used price spreads for specific models by filtering on the condition parameter
- Feed vehicle specs and images from get_vehicle_detail into a car-comparison tool
- Track inventory changes for specific dealers over time using list_dealers and get_dealer_profile
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.