kijiji.ca listings, cars and rentals from one API
The Kijiji API returns kijiji.ca, Canada's largest classifieds site, as clean JSON.
7 active endpoints. Every call is 1 credit.
- POST/kijiji/v1/search
- POST/kijiji/v1/cars/search
- POST/kijiji/v1/real_estate/search
- POST/kijiji/v1/listing
- POST/kijiji/v1/categories
- POST/kijiji/v1/suggest
- POST/kijiji/v1/seller_listings
What Kijiji endpoints does ReefAPI ship?
7 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Kijiji API
4 of 7 endpoints, ready to run
Every kijiji.ca category: listing id, title, price in CAD with its type, offer or wanted, city and province, posting date, private or business seller, photo, and the true total - 40 per page, top ads listed separately.
{ "ok": true, "meta": { "api": "kijiji", "endpoint": "search", "mode": "live", "latency_ms": 504.2, "record_count": 40, "cache_hit": false }, "data": { "results": [ { "listing_id": "1743537298", "title": "Vintage 90's Mountain bike - Thin Blue Line", "url": "https://www.kijiji.ca/v-mountain-bike/city-of-toronto/vintage-90s-mountain-bike-thin-blue-line/1743537298", "listing_format": "standard", "listing_type": "offer", "price": 125, "currency": "CAD", "price_type": "fixed", "is_free": false, "price_not_published": false, "price_before_drop": null, "msrp": null, "price_extras": null, "price_rating": null, "market_average_price": null, "category_id": 647, "location": { "location_id": 1700273, "location_name": "Old Toronto", "city": "Toronto", "province": "ON", "postal_prefix": "M5T", "postal_code": "M5T 1M5", "address": "Toronto, ON M5T 1M5", "latitude": 43.6552, "longitude": -79.40313, "nearest_intersection": null, "neighbourhood": null, "distance_m": null }, "posted_at": "2026-09-16T13:35:56.000Z", "sorted_at": "2026-09-16T13:35:56.000Z", "seller_type": "private", "seller_id": "4319687", "seller_rating": 5, "seller_verified": false, "is_top_ad": false, "ad_source": "organic", "price_drop": false, "highlighted": false, "shipped_by_seller": null, "description_excerpt": "Has a seized seatpost (can't adjust height up and down) but otherwise good vintage condition, ready to ride. Amazing deal if it fits you as-is, or if you're able to un-seize the post. Standover ...", "image": "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/75/75e7ef0d-0f20-4e73-a423-9863cb702a1b?rule=kijijica-200-jpg", "image_count": 8, "vehicle": null, "property": null, "attributes": [ { "name": "forsaleby", "codes": [ "ownr" ] }, { "name": "payment", "codes": [ "cashless", "cashaccepted" ] }, { "name": "fulfillment", "codes": [ "curbside" ] } ], "duplicate_of": null }, { "listing_id": "1743537153", "title": "Giant Talon Mountain Bike Medium", "url": "https://www.kijiji.ca/v-mountain-bike/city-of-toronto/giant-talon-mountain-bike-medium/1743537153", "listing_format": "standard", "listing_type": "offer", "price": 180, "currency": "CAD", "price_type": "fixed", "is_free": false, "price_not_published": false, "price_before_drop": null, "msrp": null, "price_extras": null, "price_rating": null, "market_average_price": null, "category_id": 647, "location": { "location_id": 1700273, "location_name": "City of Toronto", "city": "North York", "province": "ON", "postal_prefix": "M2H", "postal_code": null, "address": "North York, ON M2H", "latitude": 43.80376, "longitude": -79.36345, "nearest_intersection": null, "neighbourhood": null, "distance_m": null }, "posted_at": "2026-09-16T13:31:42.000Z", "sorted_at": "2026-09-16T13:31:43.000Z", "seller_type": "private", "seller_id": "1046760011", "seller_rating": null, "seller_verified": false, "is_top_ad": false, "ad_source": "organic", "price_drop": false, "highlighted": false, "shipped_by_seller": null, "description_excerpt": "Giant Talon mountain bike features a vibrant orange frame and is equipped with reliable Maxxis tires and a front suspension fork. It has been well-maintained and offers a smooth ride for both ...", "image": "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/b3/b39cdba7-8b5f-4bc7-83ac-7160cc141126?rule=kijijica-200-jpg", "image_count": 1, "vehicle": null, "property": null, "attributes": [ { "name": "framesize", "codes": [ "m" ] }, { "name": "condition", "codes": [ "usedgood" ] }, { "name": "payment", "codes": [ "cashaccepted" ] } ], "duplicate_of": null }, { "listing_id": "1743536985", "title": "IRONHORSE - Outlaw 18 Speed Girls Mountain Bike", "url": "https://www.kijiji.ca/v-mountain-bike/city-of-toronto/ironhorse-outlaw-18-speed-girls-mountain-bike/1743536985", "listing_format": "standard", "listing_type": "offer", "price": 20, "currency": "CAD", "price_type": "fixed", "is_free": false, "price_not_published": false, "price_before_drop": null, "msrp": null, "price_extras": null, "price_rating": null, "market_average_price": null, "category_id": 647, "location": { "location_id": 1700273, "location_name": "Toronto", "city": "Scarborough", "province": "ON", "postal_prefix": "M1E", "postal_code": "M1E 3V1", "address": "Scarborough, ON M1E 3V1", "latitude": 43.76193, "longitude": -79.17302, "nearest_intersection": null, "neighbourhood": null, "distance_m": null }, "posted_at": "2026-09-16T13:26:53.000Z", "sorted_at": "2026-09-16T13:26:53.000Z", "seller_type": "private", "seller_id": "79889023", "seller_rating": 4.857142857142857, "seller_verified": false, "is_top_ad": false, "ad_source": "organic", "price_drop": false, "highlighted": false, "shipped_by_seller": null, "description_excerpt": "Yours for only $20. Still has the $149.99 price on it as shown in the photos provided. Why spend hundreds on a bike that your daughter will out grow in a couple of years. Save yourself cash. ...", "image": "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/db/db8629cf-beaa-4b7e-be38-4a1a6c81915b?rule=kijijica-200-jpg", "image_count": 6, "vehicle": null, "property": null, "attributes": [ { "name": "forsaleby", "codes": [ "ownr" ] }, { "name": "framesize", "codes": [ "m" ] }, { "name": "condition", "codes": [ "usedlikenew" ] } ], "duplicate_of": null } ], "count": 40, "total_results": 5750, "page": 1, "page_size": 40, "last_page": 100, "has_more": true, "sort_applied": "newest", "filters_applied": null, "category": { "category_id": 0, "name": "Classifieds", "path": [ { "category_id": 0, "name": "Classifieds" } ] }, "location": { "location_id": 0, "name": "Canada" }, "radius_km": null, "keywords": "mountain bike", "site_search_url": "https://www.kijiji.ca/b-canada/mountain%20bike/k0l0", "top_ads": [ { "listing_id": "1742515731", "title": "2026 Trek Marlin – XS – 27.5” Wheels", "url": "https://www.kijiji.ca/v-mountain-bike/st-catharines/2026-trek-marlin-xs-27-5-wheels/1742515731", "listing_format": "standard", "listing_type": "offer", "price": 845, "currency": "CAD", "price_type": "fixed", "is_free": false, "price_not_published": false, "price_before_drop": null, "msrp": null, "price_extras": null, "price_rating": null, "market_average_price": null, "category_id": 647, "location": { "location_id": 80016, "location_name": "St. Catharines", "city": "St. Catharines", "province": "ON", "postal_prefix": "L2P", "postal_code": "L2P 2L3", "address": "Oakdale Ave, St. Catharines, L2P 2L3", "latitude": 43.14497, "longitude": -79.21949, "nearest_intersection": null, "neighbourhood": null, "distance_m": null }, "posted_at": "2026-08-25T02:22:46.000Z", "sorted_at": "2026-08-25T02:22:46.000Z", "seller_type": "private", "seller_id": "1033701790", "seller_rating": 4.551020408163265, "seller_verified": false, "is_top_ad": true, "ad_source": "top_ad", "price_drop": false, "highlighted": false, "shipped_by_seller": null, "description_excerpt": "Selling a 2026 Trek Marlin mountain bike in excellent, like-new condition. Great lightweight bike for trails, fitness, commuting or recreational riding. • Size XS • 27.5” wheels • Lightweight ...", "image": "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/5b/5b29fbaf-cd45-44a7-9cb7-3050d0c0b78d?rule=kijijica-200-jpg", "image_count": 7, "vehicle": null, "property": null, "attributes": [ { "name": "framesize", "codes": [ "xs" ] }, { "name": "condition", "codes": [ "usedlikenew" ] }, { "name": "payment", "codes": [ "cashaccepted" ] } ], "duplicate_of": null }, { "listing_id": "1707215358", "title": "Luxury Apartment Homes -2Bed/2Bath, Collingwood", "url": "https://www.kijiji.ca/v-apartments-condos/barrie/luxury-apartment-homes-2bed-2bath-collingwood/1707215358", "listing_format": "real_estate", "listing_type": "offer", "price": 2500, "currency": "CAD", "price_type": "fixed", "is_free": false, "price_not_published": false, "price_before_drop": null, "msrp": null, "price_extras": null, "price_rating": null, "market_average_price": null, "category_id": 37, "location": { "location_id": 1700006, "location_name": "Collingwood", "city": "Collingwood", "province": "ON", "postal_prefix": "L9Y", "postal_code": "L9Y 4T7", "address": "417 Peel Street, Collingwood, ON L9Y 4T7", "latitude": 44.49146, "longitude": -80.19872, "nearest_intersection": "Raglan Street & Ron Emo Road", "neighbourhood": "Collingwood", "distance_m": null }, "posted_at": "2024-11-26T20:55:28.000Z", "sorted_at": "2026-09-15T23:00:37.000Z", "seller_type": "business", "seller_id": "1044798128", "seller_rating": null, "seller_verified": false, "is_top_ad": true, "ad_source": "top_ad", "price_drop": false, "highlighted": true, "shipped_by_seller": null, "description_excerpt": "Ideally located in a peaceful residential neighbourhood, Riverside Apartments places you in the heart of Collingwood’s vibrant four-season community. Just steps from the town’s scenic trail system ...", "image": "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/f4/f4ef83d0-268f-4202-b40e-9f257e65fdb9?rule=kijijica-200-jpg", "image_count": 27, "vehicle": null, "property": { "bedrooms": 2, "bathrooms": 2, "area_sqft": 925, "unit_type": "apartment", "furnished": false, "pets_allowed": "1", "parking_spots": "1", "date_available": "2026-05-01T00:00:00Z", "agreement_type": "one-year", "rented_by": "professional", "utilities_included": { "heat": true, "hydro": false, "water": true }, "smoking_permitted": "0" }, "attributes": [ { "name": "heat", "codes": [ "1" ] }, { "name": "dateavailable", "codes": [ "2026-05-01T00:00:00Z" ] }, { "name": "hydro", "codes": [ "0" ] } ], "duplicate_of": null }, { "listing_id": "1743296113", "title": "Norco VLT Sight VLT CX Carbon, size 5", "url": "https://www.kijiji.ca/v-mountain-bike/chilliwack/norco-vlt-sight-vlt-cx-carbon-size-5/1743296113", "listing_format": "standard", "listing_type": "offer", "price": 6300, "currency": "CAD", "price_type": "fixed", "is_free": false, "price_not_published": false, "price_before_drop": null, "msrp": null, "price_extras": null, "price_rating": null, "market_average_price": null, "category_id": 647, "location": { "location_id": 1700141, "location_name": "Chilliwack", "city": "Chilliwack", "province": "BC", "postal_prefix": "V2R", "postal_code": "V2R 5H1", "address": "Chilliwack, BC V2R 5H1", "latitude": 49.0641, "longitude": -122.05712, "nearest_intersection": null, "neighbourhood": null, "distance_m": null }, "posted_at": "2026-09-11T04:44:36.000Z", "sorted_at": "2026-09-11T04:44:36.000Z", "seller_type": "private", "seller_id": "87212495", "seller_rating": null, "seller_verified": false, "is_top_ad": true, "ad_source": "top_ad", "price_drop": false, "highlighted": false, "shipped_by_seller": null, "description_excerpt": "Selling my 2025 VLT Sight VLT CX Carbon, size 5 Mountain Bike due to never using it. This bike has never been ridden, is in new condition, not even a scratch on it. Installed a V2 Carbon Fibre handle ...", "image": "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/bf/bf946fe3-58f8-4015-8a19-8159e8b41cb0?rule=kijijica-200-jpg", "image_count": 11, "vehicle": null, "property": null, "attributes": [ { "name": "forsaleby", "codes": [ "ownr" ] }, { "name": "condition", "codes": [ "usedlikenew" ] } ], "duplicate_of": null } ], "currency": "CAD", "query": "mountain bike", "language": "en" } }
How the Kijiji API works
Kijiji is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 252 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Price a used car model in one province without dealer ads distorting it
Dealers list most cars on kijiji and many private ads say 'please contact'. Filter to private sellers with a real price, then open the ads you want to compare.
{"make": "honda", "model": "civic", "year_min": 2015, "year_max": 2018, "seller_type": "owner", "location_id": 9004}Private Honda Civics from 2015-2018 in Ontario. Skip rows where price is null; kilometres are in vehicle.mileage_km.
{"listing_id": <listing_id from above>}Full description, condition, trim, colour and VIN where the seller gave one, and status - deleted means the car is no longer offered.
An asking-price series for one model, year range and province, with kilometres attached - one credit per call.
curl -X POST https://api.reefapi.com/kijiji/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"bike"}'{
"ok": true,
"data": { … },
"meta": {
"api": "kijiji",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}What a Kijiji price actually means - four ads, four different answers
On kijiji.ca the number next to an ad is not always a price. Free items and 'please contact' ads have no amount, a wanted ad's amount is what the buyer wants to pay, and the listing page's own structured data rounds cents away. This engine returns price only when there is a real asking amount, says which kind of price it is, and marks wanted ads.
| Listing (measured 2026-09-15) | What kijiji shows | price / price_type | other fields |
|---|---|---|---|
| 'Recumbent exercise bike', Calgary | Free | null / give_away | is_free true |
| '2017 Honda Civic Sedan LX', Toronto dealer | Please contact | null / contact | seller.type business |
| 'WANTED VINTAGE BMX BIKES & PARTS', Hamilton | $1,000.00 | 1000 / fixed | listing_type wanted (the buyer's budget) |
| 'Apple iPhone 15 - 128GB - Open Box' | $649.99 | 649.99 / fixed | the page's own structured data says 649 |
A 'bike' search sorted by lowest price returned 40 of 40 give-away ads on page one. Ads in Services carry no price at all and come back with price_not_published true.
One site, three markets, and what the price field does not mean
Measured on 2026-09-15 with 112 live calls across all seven actions, 96 end-to-end cases and a 15-listing check against the ads' own pages. Two of these lines go against us.
One engine covers every kijiji.ca category. On 2026-09-15: 'bike' 50,564 listings, Cars & Trucks 136,922, Toronto long-term rentals 7,386. Prices are in CAD; labels in English or French.
Free ads, 'please contact' and swap/trade ads come back with price null and a price_type that says which. Wanted ads are marked, because their amount is the buyer's budget. Services ads without any price carry price_not_published.
kijiji's paid top ads do not follow the query - four of six on a 'bike' search were apartments. They are returned in top_ads, never inside results.
On 15 listings across bikes, furniture, phones, cars and rentals, price, price type and availability matched the listing page 15 of 15, and the search row price matched 15 of 15. The page's own structured data once showed 649 for a 649.99 phone; the API returns 649.99.
For private sellers the name, street address and exact coordinates are left out; city, province and the postal prefix stay. Dealers and property managers come back with business name, website and profile.
Search returns 40 listings per page and stops at page 100, even when the total is larger. Sorting is newest, oldest, price or mileage - kijiji's best-match and distance orders are not available through the API. Split a large query by category, location or price.
Filters differ by category, and a filter kijiji does not apply returns INVALID_PARAM (not charged) rather than silently unfiltered data. Check include_facets for a category's filters first. Kijiji Autos (autos.kijiji.ca) is not covered.
What people build with Kijiji
The jobs this data is most often used for.
endpoints
credit per call
Used-car dealers and pricing tools track Canadian asking prices by make, model, year and kilometres with cars/search sorted by newest or lowest mileage.
Rental-market analysts follow rents per city, bedroom count and landlord type with real_estate/search and total_results, without paging through ads.
Resale and recommerce teams watch free and low-price items near a postal code with price_type, radius and price filters.
Market researchers size supply per category and province from categories and the location counts, in English or French.
What Kijiji data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 252 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/kijiji/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"bike"}'import requests
r = requests.post(
"https://api.reefapi.com/kijiji/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "bike"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Kijiji.
Get a free key →Does the Kijiji API cover cars and real estate?▾
Yes, from the same engine. kijiji.ca lists cars, trucks and rentals in its own categories, and cars/search and real_estate/search expose their filters directly: make, model, year, kilometres, body type, fuel, drivetrain and condition for vehicles; bedrooms, bathrooms, unit type, size, furnished, pets and owner or property manager for rentals. On 2026-09-15 Cars & Trucks held 136,922 listings and Toronto long-term rentals 7,386. Kijiji Autos (autos.kijiji.ca) is a separate site and is not included.
Why is price null on some listings?▾
Because kijiji has no asking amount for them. Free ads come back with price null and is_free true; 'please contact' and swap/trade ads with price null and price_type contact or swap_trade; Services and some Pets ads publish no price at all and come back with price_not_published true. A wanted ad can show an amount, and that amount is what the buyer is offering, so every row also carries listing_type.
What are top ads, and are they in my results?▾
Top ads are paid placements that kijiji shows above the results, and they do not follow your search: on a 'bike' search, four of the six were apartment ads. They come back in a separate top_ads list, never inside results, so a price sort or a filter applies cleanly to the results you asked for.
Can I search in French?▾
Set language to fr and category names, attribute labels and values come back in French - 'Autos et camions', 'D'occasion', 'Berline'. Titles and descriptions stay exactly as the seller wrote them, and keywords work in either language ('vélo' returned 4,362 listings).
Can I get the seller's name and phone number?▾
For dealers and property managers, listing returns the business name, website and profile link. For private sellers the name, street address and exact coordinates are left out; city, province and the first three characters of the postal code are returned for every ad. kijiji itself hides phone numbers; titles and descriptions come back as the seller wrote them.
How deep can I page, and how do I sort?▾
40 listings per page and up to 100 pages per query - kijiji serves no more than that even when total_results is larger (50,564 for 'bike' on 2026-09-15). Sort by newest, oldest, lowest or highest price, and in vehicles by mileage. Narrow a large query with category, location, postal code and radius, or price to reach the rest.
What happens if I send a filter kijiji does not support?▾
The call fails with INVALID_PARAM and is not charged, instead of returning an unfiltered result that looks filtered. Filters differ by category - unit type exists in Long Term Rentals but not in the For Rent parent, and a price sort does nothing in Services. Call search with include_facets true to see the filters a category supports.
What is the Kijiji API?▾
Kijiji API is a ReefAPI endpoint group for canada's #1 classifieds: listings, cars and rentals, prices in cad, english or french. It returns live JSON through POST requests under /kijiji/v1.
Is the Kijiji API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Kijiji calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Kijiji login or account?▾
No login to Kijiji is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Kijiji data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Kijiji API use?▾
Kijiji actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Kijiji from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call kijiji actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Kijiji API a Kijiji scraper?▾
It is the managed alternative to a DIY Kijiji scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same canada's #1 classifieds: listings, cars and rentals, prices in cad, english or french back as clean JSON.
16 Classifieds & Second-hand APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Kijiji, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-15.