Kijiji Canada Classified Listings Scraper
Pricing
from $6.80 / 1,000 results
Kijiji Canada Classified Listings Scraper
Scrape Canadian classified ads with title, price, city and location, category, posting date, listing URL, image, description and poster info. Search cars, real estate, jobs, services and buy & sell across Canada. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
Kijiji Canada Classified Listings Scraper
Here is one real result, with every field the actor returns:
{"imageUrl": "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/be/be075c82-487e-4ebc-8c8a-92793393c6ca?rule=kijijica-200-jpg","title": "mountain bike","url": "https://www.kijiji.ca/v-mountain-bike/city-of-toronto/mountain-bike/1741994818","id": "1741994818","price": 130,"priceType": "FIXED","priceCurrency": "CAD","category": "All Categories","categoryId": 647,"city": "City of Toronto","address": "North York, ON M2J","latitude": 43.77852,"longitude": -79.34656,"postedDate": "2026-08-14T03:58:54.000Z","description": "Jamis Trail X mountain bike in good condition. Frame: 21 in durable aluminum hardtail. Brakes: disc brakes. Derailleurs: 3x7, Shimano. Tires: Knobby mountain bike tires","posterId": "1010675691","posterRating": 4.961538461538462,"posterVerified": false,"sellerType": "Private","priceDrop": false,"promoted": false,"shippingAvailable": null,"adSource": "ORGANIC","imageCount": 2,"imageUrls": ["https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/be/be075c82-487e-4ebc-8c8a-92793393c6ca?rule=kijijica-200-jpg"],"searchQuery": "mountain bike","searchCity": "Toronto (GTA)","searchCategory": "All Categories","source": "Kijiji","observedAt": "2026-08-14T08:28:33.478Z","error": null,"aiSummary": "A Jamis Trail X mountain bike in good condition is for sale for 130 CAD. It features a 21 inch aluminum hardtail frame, disc brakes, Shimano 3x7 derailleurs, and knobby mountain bike tires.","aiAttributes": {"itemType": "mountain bike","condition": "used","brand": "Jamis","attributes": {"frame_size": "21 inches", "frame_material": "aluminum", "brakes": "disc brakes"},"tags": ["mountain bike", "Jamis", "used", "aluminum frame", "disc brakes"]}}
Note: the
descriptionandaiSummaryare real; the source uses inch (") marks and asterisk bullets, rewritten here as plain text with the same values. TheaiAttributes.attributesobject is trimmed from 5 real keys to 3 for display.
The most complete Kijiji Canada scraper available. It returns every field a Kijiji classified ad exposes, including price, geolocation, poster reputation and images, plus optional AI enrichment, and gives you keyword, category and city filters to target exactly the listings you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches Kijiji Canada for each keyword you pass, across every category and city you select, paginates through the matching classified ads, and writes one normalized record per listing to the run's dataset. Prices are parsed to a number with currency and type, location is returned with city, address and latitude/longitude, poster reputation is captured (posterRating, posterVerified, sellerType), and missing source values are returned as null.
Two optional AI add-ons (paid Apify plans only, off by default) enrich each record: aiSummary writes a plain-English summary of the ad, and aiAttributes extracts a structured item type, condition, brand, attributes and tags. Each is billed per record only when it produces usable output.
Quickstart
Open the actor, paste this into the input, and press Run. It returns 3 mountain bike listings in Toronto with both AI add-ons on.
{"searchQueries": ["mountain bike"],"categories": ["all"],"cities": ["toronto"],"maxListings": 3,"withAiListingSummary": true,"withAiCategorize": true}
Every keyword is searched in every selected category and city. Leave categories empty for all categories and cities empty to search all of Canada. The AI add-ons stay off unless you turn them on and are ignored on free plans.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | no | ["iphone"] | Keywords to search for, one search per keyword, for example iphone, honda civic, apartment for rent. Leave empty to browse a category with no keyword. |
categories | string[] | no | ["all"] | Categories to search: all, buy-sell, cars-vehicles, real-estate, jobs, services, pets. |
cities | string[] | no | ["canada"] | Cities/regions: canada, toronto, montreal, vancouver, calgary, ottawa, edmonton, winnipeg, halifax. |
maxListings | integer | no | 10 | Maximum listings to collect across all keywords, categories and cities. |
withAiListingSummary | boolean | no | false | Paid plans only. Writes a plain-English summary per ad. Billed only when a summary is produced. |
withAiCategorize | boolean | no | false | Paid plans only. Extracts item type, condition, brand, attributes and tags. Billed only when attributes are produced. |
Every keyword is combined with every selected category and city.
Output reference
One dataset item per listing. Types: string, integer, number, boolean, string[], object, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
imageUrl | string | Primary listing image URL. |
title | string | Listing title. |
url | string | Listing URL. |
id | string | Kijiji listing ID. |
price | number | Listing price, or null if not priced. |
priceType | string | Price type, for example FIXED, FREE, PLEASE_CONTACT. |
priceCurrency | string | Currency code, for example CAD. |
category | string | Category label. |
categoryId | integer | Kijiji category ID. |
city | string | City the ad is posted in. |
address | string | Neighborhood/address text. |
latitude | number | Listing latitude. |
longitude | number | Listing longitude. |
postedDate | string | Posting timestamp (ISO 8601). |
description | string | Listing description text. |
posterId | string | Poster/seller ID. |
posterRating | number | Poster average rating, or null. |
posterVerified | boolean | Whether the poster is verified. |
sellerType | string | Seller type, for example Private, Dealer. |
priceDrop | boolean | Whether the ad has a recent price drop. |
promoted | boolean | Whether the ad is promoted/featured. |
shippingAvailable | boolean | Whether shipping is offered, or null. |
adSource | string | Ad source, for example ORGANIC. |
attributes | object | Structured ad attributes from the source, when present. |
attributesCount | integer | Number of source attributes. |
imageCount | integer | Number of images on the ad. |
imageUrls | string[] | All listing image URLs. |
searchQuery | string | Keyword that produced this record. |
searchCity | string | City filter that produced this record. |
searchCategory | string | Category filter that produced this record. |
source | string | Data source. Always Kijiji. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
aiSummary | string | AI English ad summary. null unless the AI add-on is on. |
aiAttributes | object | AI item type, condition, brand, attributes and tags. null unless the AI add-on is on. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"searchQueries":["mountain bike"],"cities":["toronto"],"maxListings":3,"withAiListingSummary":true,"withAiCategorize":true}):
{"imageUrl": "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/be/be075c82-487e-4ebc-8c8a-92793393c6ca?rule=kijijica-200-jpg","title": "mountain bike","url": "https://www.kijiji.ca/v-mountain-bike/city-of-toronto/mountain-bike/1741994818","id": "1741994818","price": 130,"priceType": "FIXED","priceCurrency": "CAD","category": "All Categories","categoryId": 647,"city": "City of Toronto","address": "North York, ON M2J","latitude": 43.77852,"longitude": -79.34656,"postedDate": "2026-08-14T03:58:54.000Z","description": "Jamis Trail X mountain bike in good condition. Frame: 21 in durable aluminum hardtail. Brakes: disc brakes. Derailleurs: 3x7, Shimano. Tires: Knobby mountain bike tires","posterId": "1010675691","posterRating": 4.961538461538462,"posterVerified": false,"sellerType": "Private","priceDrop": false,"promoted": false,"shippingAvailable": null,"adSource": "ORGANIC","imageCount": 2,"imageUrls": ["https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/be/be075c82-487e-4ebc-8c8a-92793393c6ca?rule=kijijica-200-jpg"],"searchQuery": "mountain bike","searchCity": "Toronto (GTA)","searchCategory": "All Categories","source": "Kijiji","observedAt": "2026-08-14T08:28:33.478Z","error": null,"aiSummary": "A Jamis Trail X mountain bike in good condition is for sale for 130 CAD. It features a 21 inch aluminum hardtail frame, disc brakes, Shimano 3x7 derailleurs, and knobby mountain bike tires.","aiAttributes": {"itemType": "mountain bike","condition": "used","brand": "Jamis","attributes": {"frame_size": "21 inches", "frame_material": "aluminum", "brakes": "disc brakes", "derailleurs": "3x7 Shimano", "tires": "knobby mountain bike tires"},"tags": ["mountain bike", "Jamis", "used", "aluminum frame", "disc brakes"]}}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~kijiji-canada-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["honda civic"],"categories":["cars-vehicles"],"cities":["toronto"],"maxListings":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~kijiji-canada-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["apartment for rent"],"categories":["real-estate"],"cities":["vancouver"],"maxListings":100}'
Apify CLI:
apify call scrapers_lat/kijiji-canada-scraper \--input '{"searchQueries":["iphone"],"cities":["montreal"],"maxListings":10}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per listing record returned (
resultevent). See the pricing tab for the current per-result price. - AI add-ons billed separately.
withAiListingSummaryandwithAiCategorizeare charged per record only when they produce usable output, and only on paid plans. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run, and AI add-ons are ignored. Upgrade for higher
maxListingsand AI enrichment.
FAQ and troubleshooting
A run returned 0 records. Why?
The keyword and filter combination matched nothing. Broaden the keyword, set categories to all, or widen cities to canada. Zero-result runs are not charged.
Can I scrape a whole category with no keyword?
Yes. Leave searchQueries empty and select the category and city you want.
Why are aiSummary and aiAttributes null?
The AI add-ons are off by default and ignored on free plans. Turn on withAiListingSummary and withAiCategorize on a paid plan to populate them.
How do I search several cities at once?
List them in cities. Each keyword is searched in every selected city and category, and results are combined up to maxListings.
Do I get seller contact details? The actor returns the poster ID, rating, verified flag and seller type that Kijiji exposes publicly. It does not bypass any login or reveal private contact info.
Is this an official Kijiji tool? No. This actor is independent and has no affiliation with Kijiji. It reads only data that is publicly available on Kijiji. Use it in accordance with Kijiji's terms of service.
Related scrapers
- Craigslist Listings Scraper: US classified ads by city and category.
- Facebook Marketplace Scraper: Marketplace listings with price and location.
- MercadoLibre Listings Scraper: Latin American marketplace listings.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Kijiji. Accesses only publicly available Kijiji data. Use in accordance with Kijiji's terms of service.
