Kijiji APIkijiji.ca ↗
Access Kijiji.ca classified ads via API. Search rentals, jobs, pets, and general listings. Filter by location, category, and keywords across Canada.
What is the Kijiji API?
The Kijiji.ca API exposes 7 endpoints for searching and retrieving classified ad data from Canada's largest classifieds platform. Use search_listings to query across all categories with keyword, location, and category filters, or use specialized endpoints like search_rental_listings and search_job_listings to target specific verticals. Listing detail responses include seller profile data, price in cents with currency, coordinates, and full image arrays.
curl -X GET 'https://api.parse.bot/scraper/2a6b6220-98b8-4e29-8875-e62665d461dc/search_listings?page=1&cat_id=0&loc_id=0&keywords=laptop&category_slug=b-all&location_slug=l0' \ -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 kijiji-ca-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.
from parse_apis.kijiji_canada_api import Kijiji, ListingSummary, Listing, Category, Location
kijiji = Kijiji()
# Search for laptop listings in Toronto
for listing in kijiji.listingsummaries.search(keywords="laptop", location_slug="toronto", limit=5):
print(listing.title, listing.url, listing.category_id)
# Get full details of the first result including seller profile
first = next(iter(kijiji.listingsummaries.search(keywords="laptop", location_slug="toronto", limit=1)))
detail = first.details()
print(detail.title, detail.description, detail.seller_profile.name, detail.seller_profile.number_of_listings)
# Search rental listings in Montreal
for rental in kijiji.listingsummaries.search_rentals(location="montreal", limit=3):
print(rental.title, rental.location.name, rental.activation_date)
# Browse categories
for cat in kijiji.categories.list():
print(cat.name, cat.id, cat.is_leaf)
# Browse locations
for loc in kijiji.locations.list():
print(loc.name, loc.id, loc.parent_id)
Search classified ads across all categories with filters for category, location, and keywords. Returns up to 40 listings per page with pagination metadata. The URL is constructed from category and location slugs plus optional keyword and ID filters. Pagination advances via the page parameter.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| cat_id | integer | Category ID filter. Use get_categories to discover valid IDs. |
| loc_id | integer | Location ID filter. Use get_locations to discover valid IDs. |
| keywords | string | Search keywords to filter listings. |
| category_slug | string | Category URL slug (e.g. 'b-all', 'b-apartments-condos', 'b-jobs'). |
| location_slug | string | Location URL slug (e.g. 'l0' for all Canada, 'montreal', 'toronto'). |
{
"type": "object",
"fields": {
"listings": "array of listing summary objects with id, title, description, price, location, url, imageUrls, categoryId, activationDate, sortingDate, attributes, posterInfo, and flags",
"pagination": "object with offset, limit, and totalCount"
},
"sample": {
"data": {
"listings": [
{
"id": "1738941332",
"url": "https://www.kijiji.ca/v-laptops/oshawa-durham-region/laptops/1738941332",
"flags": {
"topAd": false,
"showcase": false,
"highlight": false,
"priceDrop": false
},
"price": {
"type": "CONTACT"
},
"title": "Laptops",
"location": {
"id": 1700275,
"name": "Ajax",
"address": "Ajax, ON L1Z 1G1",
"coordinates": {
"latitude": 43.86858,
"longitude": -79.01506
}
},
"imageUrls": [
"https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/36/364fb272.jpg"
],
"attributes": {
"all": [
{
"canonicalName": "condition",
"canonicalValues": [
"new"
]
}
]
},
"categoryId": 773,
"posterInfo": {
"rating": null,
"posterId": "1045740849",
"verified": false
},
"description": "We have all kind of laptops...",
"sortingDate": "2026-06-09T20:29:14.000Z",
"activationDate": "2026-06-09T20:29:14.000Z"
}
],
"pagination": {
"limit": 40,
"offset": 0,
"totalCount": 18880
}
},
"status": "success"
}
}About the Kijiji API
Search and Browse Canadian Classifieds
The search_listings endpoint is the general-purpose entry point, accepting keywords, cat_id, loc_id, category_slug, and location_slug as optional filters. Results return up to 40 listings per page, each with id, title, description, price, location, url, imageUrls, categoryId, activationDate, and sortingDate. Pagination is handled through the page parameter, with the pagination object in the response exposing offset, limit, and totalCount for building full result sets.
Category- and Vertical-Specific Search
Three focused search endpoints cover common Kijiji verticals. search_rental_listings filters to apartments and condos, search_pet_listings supports sub-category slugs like cats-kittens or dogs-puppies, and search_job_listings targets job ads. All three accept keywords and a location slug (e.g. montreal, toronto), and return listing arrays with attributes alongside the standard fields. Use get_categories and get_locations to discover valid cat_id and loc_id integers for search_listings, or to enumerate province-level location IDs including parentId relationships.
Listing Detail and Seller Data
get_listing_detail accepts a full or relative listing URL and returns a richer response than the search endpoints. Key additions include a sellerProfile object with the seller's id, name, numberOfListings, userType, and profilePath, and a price object broken out into type, amount (in cents), and currency. Location data includes address and geographic coordinates, making it suitable for mapping applications. Image URLs are returned as an array in imageUrls.
The Kijiji API is a managed, monitored endpoint for kijiji.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kijiji.ca 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 kijiji.ca 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?+
- Track rental price trends by location using price.amount and location fields from search_rental_listings across multiple Canadian cities.
- Build a job board aggregator pulling Kijiji job listings filtered by keyword and location slug for specific trades or industries.
- Monitor new listings in a category by polling search_listings with a cat_id and sorting by activationDate to detect recently posted ads.
- Enrich a pet adoption platform by pulling search_pet_listings with sub-category slugs like cats-kittens or dogs-puppies by city.
- Map classified ad density by extracting coordinates from get_listing_detail responses and plotting them geographically.
- Profile high-volume sellers by comparing numberOfListings from the sellerProfile object returned by get_listing_detail.
- Populate a category navigation UI using the children arrays from get_categories to display Kijiji's full hierarchy with seoUrl links.
| 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.