Kijiji.ca Scraper avatar

Kijiji.ca Scraper

Pricing

from $2.39 / 1,000 listings

Go to Apify Store
Kijiji.ca Scraper

Kijiji.ca Scraper

Scrape Kijiji.ca listings by keyword, category and location: cars, apartments, jobs and buy & sell ads with price, photos, seller, coordinates and vehicle or rental details. Export JSON, CSV or Excel.

Pricing

from $2.39 / 1,000 listings

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Kijiji.ca Scraper

Kijiji.ca Scraper extracts listings from Kijiji.ca, the Canadian classifieds site, by keyword, category and location: cars and vehicles, apartments and houses, jobs, services, pets and Buy & Sell ads, with prices, photos, sellers and coordinates.

Search any of 208 Canadian provinces, regions and cities, or paste Kijiji search, listing and dealer URLs. Get 87 fields per listing, including make, model, year, km, VIN and CARFAX link for vehicles, and bedrooms, bathrooms, size, utilities and pet policy for rentals. Read past Kijiji's 4,000-results-per-search limit, in English or French.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor or any other LLM to start using this Actor.

Use the Apify Actor "parsebird/kijiji-scraper" (Kijiji.ca Scraper) to get classified listings from kijiji.ca (Canada). Call it with the apify-client package: Python `ApifyClient("<APIFY_TOKEN>").actor("parsebird/kijiji-scraper").call(run_input={...})`, or JavaScript `new ApifyClient({ token }).actor('parsebird/kijiji-scraper').call({...})`, then read items from the run's default dataset. Inputs (all optional, but give keywords, startUrls, category or location): keywords (array of search terms, e.g. ["honda civic"]), category (string Kijiji category ID: "174" Cars & Trucks, "27" Cars & Vehicles, "37" Long Term Rentals, "35" Houses for Sale, "10" Buy & Sell, "45" Jobs, "72" Services, "112" Pets; default "" all), location (string Kijiji location ID: "0" Canada default, "9004" Ontario, "9001" Quebec, "9007" British Columbia, "9003" Alberta, "1700272" Toronto (GTA), "1700273" City of Toronto, "1700281" City of Montreal, "1700287" Vancouver, "1700199" Calgary, "1700185" Ottawa), startUrls (array of {url}: Kijiji search result URLs /b-..., listing URLs /v-..., seller profile URLs /o-...), minPrice and maxPrice (int CAD), sellerType ("" any, "private", "business"), sortBy ("newest" default, "oldest", "price_asc", "price_desc", "relevance"), maxItems (int, default 100, total across all inputs; Kijiji shows max 4,000 per search and the Actor splits bigger searches by price), scrapeDetails (bool, default false: full description, all photos, seller name and profile, status, expiry, market average price, mileage rating), includeTopAds (bool, default false), language ("en" default or "fr"), proxyConfiguration (object, default no proxy). Each item has listingId, url, title, description, fullDescription, vertical, categoryId, categoryName, categoryPath, price (CAD number), currency, priceType (FIXED, CONTACT, GIVE_AWAY, SWAP_TRADE), originalPrice, priceDropped, priceRating, marketAveragePrice, locationName, locationId, province, address, nearestIntersection, latitude, longitude, postedAt, sortingDate, expiresAt, status, adSource, isTopAd, isShowcase, isHighlighted, views, sellerId, sellerType, sellerName, sellerAccountType, sellerProfileUrl, sellerWebsite, sellerListingCount, sellerRating, sellerVerified, hasPhoneNumber, imageCount, thumbnailUrl, imageUrls, youtubeUrl, virtualTourUrl, vehicle fields (make, model, trim, year, mileageKm, transmission, fuelType, drivetrain, bodyType, color, interiorColor, condition, seats, doors, vin, stockNumber, carfaxUrl, mileageRating, vehicleFeatures), real estate fields (unitType, bedrooms, bathrooms, sizeSqft, furnished, petsAllowed, smokingPermitted, parkingSpots, leaseTerm, availableDate, utilitiesIncluded, amenities), company, jobType, fulfillment, paymentOptions, breed, attributes (object of every Kijiji attribute), searchUrl, searchKeyword, scrapedAt. Pricing: pay per listing saved. API docs: https://apify.com/parsebird/kijiji-scraper/api. Get a token at https://console.apify.com/settings/integrations.

What is Kijiji.ca Scraper?

Kijiji.ca Scraper turns Kijiji search results into clean JSON, CSV or Excel. Type a keyword such as honda civic, 2 bedroom apartment or sectional sofa, pick a category and a province or city, and the Actor returns every matching listing with its price, location and coordinates, seller type, photos, posting date, view count and category-specific details.

It works as a Kijiji API alternative. Kijiji has no public API for its listings, so Kijiji.ca Scraper collects the same data the website shows to visitors and hands it to you as a dataset. You can also paste any Kijiji URL: a search with the filters you set on the site, a single listing, or a dealer or seller profile.

To try it, open the Input tab and click Start. The prefilled search returns 50 Honda Civic listings from the Toronto (GTA) Cars & Trucks category.

What can Kijiji.ca Scraper do?

  • 🔎 Search by keyword, category and location: combine keywords with one of 129 Kijiji categories and one of 208 provinces, regions and cities, from all of Canada down to City of Toronto or Ville de Montréal.
  • 🔗 Scrape any Kijiji URL: paste search result pages (with every filter Kijiji offers, such as make, model, year, km, bedrooms or pet policy), single listing pages, or seller and dealer profiles to get a whole dealer inventory.
  • 🚗 Vehicle data: make, model, trim, year, kilometres, transmission, fuel type, drivetrain, body type, colours, seats, doors, VIN, stock number, CARFAX report link, Kijiji's price rating and a list of features such as Bluetooth or sunroof.
  • 🏠 Rental and real estate data: unit type, bedrooms, bathrooms, size in square feet, furnished, pets, smoking, parking, lease term, move-in date, utilities included, amenities, nearest intersection, video and virtual tour links.
  • 💼 Jobs, Buy & Sell, services and pets: company and job type, item condition, pickup and delivery options, accepted payments and dog or cat breed.
  • 💶 Filter and sort: price range in Canadian dollars, private sellers or businesses only, and sorting by newest, oldest, price or relevance.
  • 📈 Go past the 4,000-result limit: Kijiji shows at most 100 pages of 40 listings for one search. When you ask for more, the Actor splits the search into price ranges and keeps going.
  • 📄 Listing details: turn on Scrape listing details to add the full description, every photo, the seller's name, profile, website and listing count, the listing's status and expiry date, the market average price for vehicles, a mileage rating and whether a phone number is listed.
  • 🇫🇷 English or French: get Kijiji's labels (categories, locations, condition, transmission) and listing URLs in English or French.
  • ⚙️ Built for automation: schedule runs to catch new listings or price drops, call the Actor through the Apify API, send results to Make, Zapier, n8n, Google Sheets, Slack and more, and export as JSON, CSV, Excel or HTML.

What data can you extract from Kijiji?

FieldDescription
listingId, url, titleKijiji ad ID, link to the listing and its title
description, fullDescriptionDescription. Search results give an excerpt of about 200 characters; with listing details it's the full text (fullDescription: true)
vertical, categoryId, categoryName, categoryPathKijiji section (cars-vehicles, real-estate, buy-sell, jobs, services, pets, community, vacation-rentals), category ID, name and full path such as Real Estate > For Rent > Long Term Rentals
price, currency, priceTypePrice in Canadian dollars, CAD, and Kijiji's price type: FIXED, CONTACT (please contact), GIVE_AWAY (free) or SWAP_TRADE
originalPrice, priceDroppedPrice before a reduction and Kijiji's reduced-price flag
priceRating, marketAveragePriceKijiji's price badge for vehicles (GREAT, GOOD, FAIR, POOR) and the market average price it compares against (details only)
locationName, province, address, nearestIntersection, latitude, longitudeKijiji location, two-letter province code, address as posted, nearest intersection for rentals, and coordinates
postedAt, sortingDate, expiresAt, statusWhen the ad was posted, when it was last bumped to the top, when it expires, and ACTIVE (expiry and status need details)
adSource, isTopAd, isShowcase, isHighlightedORGANIC, TOP_AD, PROV_TOP_AD or ZIP (ZipRecruiter partner job ads), and Kijiji's paid placement flags
viewsNumber of times the ad was viewed
sellerType, sellerId, sellerRating, sellerVerifiedprivate or business, seller ID, star rating and verified flag
sellerName, sellerAccountType, sellerProfileUrl, sellerWebsite, sellerListingCountSeller or dealer name, account type (FSBO, PV_DEALER, RE_PROFESSIONAL, JOBS_PROFESSIONAL…), profile link, website and number of live ads (details or profile URLs)
hasPhoneNumberWhether the seller listed a phone number (details only; Kijiji hides the number itself)
imageCount, thumbnailUrl, imageUrlsPhoto count and photo URLs in 1600 px size. Search results include the first photos; listing details give all of them
youtubeUrl, virtualTourUrlVideo and virtual tour links (details only)
make, model, trim, year, mileageKm, transmission, fuelType, drivetrain, bodyType, color, interiorColor, condition, seats, doorsVehicle specs as entered by the seller
vin, stockNumber, carfaxUrl, mileageRating, vehicleFeaturesVIN, dealer stock number, CARFAX Canada report link, Kijiji's mileage rating (LOW, AVERAGE, HIGH, details only) and features
unitType, bedrooms, bathrooms, sizeSqft, furnished, petsAllowed, smokingPermitted, parkingSpots, leaseTerm, availableDateRental and property details
utilitiesIncluded, amenitiesUtilities in the rent (heat, hydro, water, internet, cable / TV) and amenities such as in-unit laundry, dishwasher, balcony or gym
company, jobType, fulfillment, paymentOptions, breedJob company and type, Buy & Sell pickup or delivery and payment options, pet breed
attributesEvery attribute Kijiji has for the listing, as an object (for example carmake, numberbedrooms, forsaleby)
searchUrl, searchKeyword, scrapedAtThe Kijiji search the listing came from, your keyword and the time it was collected

Fields a listing doesn't have come back as null or an empty list. A rental has no make, a car has no bedrooms, and sellers often skip optional fields such as VIN or square footage.

How to scrape Kijiji.ca

  1. Open Kijiji.ca Scraper on Apify Store and go to the Input tab.
  2. Type one or more Search keywords, or leave them empty to browse a whole category.
  3. Pick a Category and a Location, or paste Kijiji URLs into Kijiji URLs.
  4. Optionally set Min price and Max price, Posted by (owners or dealers) and Sort by.
  5. Set Max listings for the whole run. Turn on Scrape listing details if you need full descriptions, all photos or seller names.
  6. Click Start. When the run finishes, download the dataset as JSON, CSV, Excel or HTML, or read it with the dataset API.

To scrape a search with filters the input form doesn't have, such as car make, year range or number of bedrooms, set them on kijiji.ca, copy the URL from your browser and paste it into Kijiji URLs.

Input parameters

ParameterTypeRequiredDefaultDescription
keywordsarray of stringsNo—Search terms. Each keyword runs as its own search with the category, location and filters below
categorystringNo"" (all)Kijiji category ID, for example 174 Cars & Trucks, 37 Long Term Rentals, 35 Houses for Sale, 10 Buy & Sell, 45 Jobs
locationstringNo0 (Canada)Kijiji location ID, for example 9004 Ontario, 1700272 Toronto (GTA), 1700281 City of Montréal, 1700287 Vancouver
startUrlsarrayNo—Kijiji search result (/b-…), listing (/v-…) or seller profile (/o-…) URLs
minPriceintegerNo—Minimum price in CAD (keyword searches)
maxPriceintegerNo—Maximum price in CAD (keyword searches)
sellerTypestringNo""private (owners) or business (dealers, agents, employers)
sortBystringNonewestnewest, oldest, price_asc, price_desc or relevance (keyword searches)
maxItemsintegerNo100Maximum listings to save in total, across all keywords and URLs
scrapeDetailsbooleanNofalseAdd full description, all photos, seller details, status, expiry, market price and mileage rating
includeTopAdsbooleanNofalseAlso save the paid Top Ads shown above the results
languagestringNoenen or fr: language of Kijiji's labels and listing URLs
proxyConfigurationobjectNono proxyProxy settings. Kijiji works without one

At least one of keywords, startUrls, category or location is needed. Example input:

{
"keywords": ["toyota rav4"],
"category": "174",
"location": "9004",
"sellerType": "private",
"maxPrice": 25000,
"sortBy": "newest",
"maxItems": 200,
"scrapeDetails": true
}

Output example

A dealer car listing and a rental, both with Scrape listing details on. Fields that don't apply to the listing are null and are left out here to keep the example short.

[
{
"listingId": "1745500886",
"url": "https://www.kijiji.ca/v-cars-trucks/mississauga-peel-region/2025-honda-civic-hybrid-sport-touring-ecvt-sedan/1745500886",
"title": "2025 Honda Civic Hybrid Sport Touring eCVT Sedan",
"description": "PRICING DISCLAIMER: The advertised price is for finance purchases only. A $2000.00 surcharge applies to cash deals. Prices are subject to change without notice…",
"fullDescription": true,
"vertical": "cars-vehicles",
"categoryId": 174,
"categoryName": "Cars & Trucks",
"categoryPath": "Cars & Vehicles > Cars & Trucks",
"price": 29932,
"currency": "CAD",
"priceType": "FIXED",
"priceDropped": false,
"priceRating": "FAIR",
"marketAveragePrice": 28099,
"locationName": "Mississauga / Peel Region",
"locationId": 1700276,
"province": "ON",
"address": "4 Maritime Ontario Boulevard, Brampton, ON, L6S 0C2",
"latitude": 43.7455678,
"longitude": -79.6947773,
"postedAt": "2026-10-30T07:52:37.000Z",
"sortingDate": "2026-10-30T07:52:37.000Z",
"status": "ACTIVE",
"adSource": "ORGANIC",
"isTopAd": false,
"isShowcase": true,
"views": 27,
"sellerId": "COMMERCIAL_497",
"sellerType": "business",
"sellerName": "Open Road Honda",
"sellerAccountType": "PV_DEALER",
"sellerProfileUrl": "https://www.kijiji.ca/o-open-road-honda/497/listings/1",
"sellerWebsite": "https://www.openroadhondabrampton.ca/?utm_source=kijiji.ca&utm_medium=referral",
"sellerListingCount": 40,
"sellerRating": 4.2,
"hasPhoneNumber": true,
"imageCount": 1,
"thumbnailUrl": "https://media.kijiji.ca/api/v1/ca-prod-dealer-ads/images/81/81e6a286-2d81-4b7a-b2ec-382ac9d638c7?rule=kijijica-1600-jpg",
"make": "Honda",
"model": "Civic",
"trim": "Sport Touring eCVT Sedan",
"year": 2025,
"mileageKm": 94347,
"transmission": "Automatic",
"fuelType": "Hybrid-Electric",
"drivetrain": "Other",
"bodyType": "Sedan",
"color": "Black",
"condition": "Used",
"seats": 5,
"doors": 4,
"vin": "2HGFE4F80SH008535",
"stockNumber": "34UTNA08535",
"carfaxUrl": "https://vhr.carfax.ca/?id=W8dJ6pPUlgMEz4d1BftUdHmnvwAEFKuH",
"mileageRating": "HIGH",
"vehicleFeatures": ["Alloy wheels", "Bluetooth", "Navigation system", "Parking assistant", "Push button start", "Sunroof"],
"attributes": {"carmake": "Honda", "carmodel": "Civic", "caryear": "2025", "carmileageinkms": "94347", "forsaleby": "Dealer", "sunroof": "true", "vin": "2HGFE4F80SH008535"},
"searchUrl": "https://www.kijiji.ca/b-cars-trucks/gta-greater-toronto-area/honda-civic/k0c174l1700272?for-sale-by=delr&sort=dateDesc",
"searchKeyword": "honda civic",
"scrapedAt": "2026-10-30T11:38:47.522Z"
},
{
"listingId": "1742826435",
"url": "https://www.kijiji.ca/v-apartments-condos/ottawa/apartment-for-rent-at-forest-ridge-centrepointe/1742826435",
"title": "Apartment for Rent at Forest Ridge, Centrepointe",
"fullDescription": true,
"vertical": "real-estate",
"categoryId": 37,
"categoryName": "Long Term Rentals",
"categoryPath": "Real Estate > For Rent > Long Term Rentals",
"price": 1850,
"currency": "CAD",
"priceType": "FIXED",
"locationName": "Ottawa",
"province": "ON",
"address": "2380 Baseline, Ottawa, ON, K2C 3J4",
"nearestIntersection": "Baseline Road & Southwood Drive",
"latitude": 45.34383,
"longitude": -75.77968,
"postedAt": "2026-08-31T20:17:21.000Z",
"sortingDate": "2026-10-30T00:25:55.000Z",
"status": "ACTIVE",
"views": 356,
"sellerType": "business",
"sellerName": "Forest Ridge",
"sellerAccountType": "RE_PROFESSIONAL",
"sellerWebsite": "https://www.irent.com/communities/forest-ridge",
"sellerListingCount": 17,
"imageCount": 17,
"youtubeUrl": "https://www.youtube.com/watch?v=bEUUXzNn_oE",
"virtualTourUrl": "https://my.matterport.com/show/?m=HRHNqGpxhdg",
"unitType": "Apartment",
"bedrooms": "1",
"bathrooms": "1",
"sizeSqft": 625,
"furnished": "No",
"petsAllowed": "Yes",
"smokingPermitted": "No",
"leaseTerm": "1 Year",
"availableDate": "2026-12-01",
"utilitiesIncluded": ["Heat", "Water"],
"amenities": ["Laundry (In Building)"]
}
]

Use Kijiji.ca Scraper from Python or JavaScript

Install the client with pip install apify-client or npm install apify-client, and get your API token from Apify Console.

Python

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("parsebird/kijiji-scraper").call(run_input={
"keywords": ["toyota rav4"],
"category": "174", # Cars & Trucks
"location": "9004", # Ontario
"sellerType": "private",
"maxPrice": 25000,
"maxItems": 200,
})
for car in client.dataset(run["defaultDatasetId"]).iterate_items():
print(car["price"], car["year"], car["mileageKm"], car["locationName"], car["url"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('parsebird/kijiji-scraper').call({
startUrls: [{ url: 'https://www.kijiji.ca/b-apartments-condos/city-of-toronto/c37l1700273' }],
scrapeDetails: true,
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((l) => console.log(l.price, l.bedrooms, l.bathrooms, l.address, l.utilitiesIncluded));

Use cases

  • Used car pricing: collect year, kilometres, trim and price for a make and model across provinces, and compare them with Kijiji's own price rating and market average.
  • Dealer inventory tracking: paste a dealer's profile URL and monitor its stock, prices and price drops over time.
  • Rental market research: track rents by bedroom count, size, utilities and pet policy in Toronto, Montréal, Vancouver or any other city.
  • Deal alerts: schedule a search sorted by newest with a price cap, and get new listings by email or Slack through webhooks and integrations.
  • Reseller sourcing: find free items (priceType: GIVE_AWAY) and underpriced Buy & Sell listings from private sellers near you.
  • Lead generation and market data: list businesses that advertise in a category, or feed listing data into dashboards, spreadsheets and models.

How it works

  1. The Actor turns your keyword, category, location, price, seller and sort settings into a Kijiji search, or uses the URLs you paste.
  2. It reads the results 40 listings per page, several pages at a time, until it reaches Max listings or the end of the results.
  3. Kijiji shows no more than 100 pages (4,000 listings) for one search. When you ask for more, the Actor splits the search into price ranges that each fit under that limit.
  4. With Scrape listing details on, it looks up the full listing and seller profile for 20 listings per request, so details add very little run time.
  5. Listings are de-duplicated across keywords and URLs and saved to the dataset as they come in. If Apify moves the run to another server, it continues without saving the same listing twice.

In our tests a 4,400-listing Toronto car search finished in about 80 seconds, and 1,000 Ontario rentals with full details in about a minute.

How much does it cost to scrape Kijiji?

Kijiji.ca Scraper uses pay-per-event pricing: you pay for each listing saved to the dataset. Compute and proxy costs are included in the event price, so they aren't billed separately.

EventFreeBronzeSilverGold
Listing scraped$2.99 / 1,000$2.79 / 1,000$2.59 / 1,000$2.39 / 1,000

One saved listing is one charge, with or without listing details. At Free plan prices, 100 listings cost about $0.30 and 10,000 listings cost $29.90. To control spending, set Max listings. The run also stops when it reaches the maximum cost per run you set in Apify Console.

Kijiji.ca Scraper only collects listing information that Kijiji shows publicly to visitors who aren't logged in. It doesn't log in, doesn't send messages and doesn't access private account data or hidden phone numbers. Listings can contain personal information, such as a private seller's display name or a phone number written in the description. If you store or use that data, you're responsible for complying with Canadian privacy law (PIPEDA and provincial laws) and Kijiji's terms of use. Consult a lawyer if you're unsure. For more background, read Apify's article Is web scraping legal?

Other Canadian and marketplace scrapers from ParseBird

ActorWhat it does
AutoTrader Canada ScraperNew and used car listings from AutoTrader.ca
Realtor.ca Property ScraperCanadian homes for sale and rent from Realtor.ca
Job Bank Canada ScraperJob postings from the Government of Canada's Job Bank
Facebook Marketplace ScraperFacebook Marketplace listings by keyword and location
Craigslist ScraperCraigslist listings with contact details
OfferUp ScraperLocal marketplace listings from OfferUp
Marktplaats ScraperClassifieds from Marktplaats.nl, 2dehands.be and 2ememain.be

FAQ

Do I need a Kijiji account or API key? No. The Actor reads the same public listings the website shows to logged-out visitors.

Do I need a proxy? No. Kijiji.ca Scraper runs without a proxy by default. If Kijiji starts refusing requests, it switches to Apify datacenter proxy and then Canadian residential proxy by itself.

Can I get more than 4,000 listings from one search? Yes. Kijiji stops at page 100 of any search, which is 4,000 listings. When Max listings is higher, the Actor first reads those 4,000 and then splits the search into price ranges. Listings without a price (Please contact, Swap/Trade) are only reachable in the first 4,000, because a price range leaves them out.

How do I use filters such as make, model, year or bedrooms? Set them on kijiji.ca, copy the URL from the address bar and paste it into Kijiji URLs. The Actor keeps every filter and the sort order in the URL. It always starts from page 1, even if the URL is for a later page.

Why do some listings have no VIN, size or available date? Kijiji doesn't require these fields, so many sellers leave them empty. The Actor returns what the seller entered and null for the rest.

Why are sellerName, status and expiresAt empty? They come from the listing page. Turn on Scrape listing details, or paste a seller profile URL, which fills in the seller fields for every listing of that seller.

Can I get the seller's phone number? No. Kijiji doesn't include sellers' phone numbers in the listing data it shows to visitors. With listing details on, hasPhoneNumber tells you whether the seller listed one. Numbers that sellers type into the description are part of description.

What are listings with adSource: ZIP? They're ZipRecruiter job ads that Kijiji mixes into its Jobs results. Their URL points to ziprecruiter.com and they have no Kijiji listing page, so listing details don't apply to them.

What does French mode change? Kijiji's own labels (categories, locations, condition, transmission, job type, pet policy) and listing URLs come back in French. Titles and descriptions stay in the language the seller wrote them in.

Can I run it on a schedule or from my own code? Yes. Use Apify schedules for daily or hourly runs, the Apify API or the Python and JavaScript clients shown above, and integrations to push results to Google Sheets, Slack, Make, Zapier or n8n.

Something doesn't work or a field is missing. What should I do? Open an issue on the Actor's Issues tab with your input and run ID, and we'll look into it.