Kijiji.ca Scraper
Pricing
from $2.50 / 1,000 results
Kijiji.ca Scraper
Scrape Kijiji.ca — Canada's #1 classifieds — with a vertical-aware structured schema across all 5 verticals: Autos, Real Estate, Jobs, Services, Marketplace. Per-vertical fields (make/model/VIN, bedrooms/rent/utilities), FSBO vs dealer detection, bilingual EN/FR. Pure HTTP, no browser.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
Kijiji.ca Scraper — Canada Classifieds Data Extractor for Cars, Apartments, Jobs, Services & Marketplace Listings
The most complete Kijiji.ca classifieds extraction tool on Apify. Pull live listings from Canada's #1 marketplace — Kijiji — across all five verticals (Autos, Real Estate, Jobs, Services, Buy & Sell) with a vertical-aware structured schema, FSBO vs dealer detection, bilingual EN/FR handling, and pure HTTP performance. Built for resellers, car flippers, rental researchers, recruiters, and brand-monitoring teams across Toronto, Montreal, Vancouver, Calgary, Ottawa and every Canadian metro.
What This Actor Does
The Kijiji.ca Scraper is a production-ready Apify Actor that extracts live classified listings from Kijiji.ca — the dominant general-purpose marketplace in Canada, owned by Adevinta, with tens of millions of monthly visits across English Canada and Quebec. Kijiji is the country's go-to destination for used cars, apartment rentals, household items, freelance services, garage sales, side-hustle jobs, and second-hand everything in every province from Newfoundland to British Columbia.
This actor turns any Kijiji search URL or keyword query into a clean, structured JSON dataset — no headless browser, no CAPTCHA solving, no fragile DOM scraping. It uses pure HTTP fetching with intelligent JSON hydration parsing (__NEXT_DATA__), automatic vertical detection, and per-vertical schema enrichment so cars come with VIN/mileage/transmission, apartments come with bedrooms/rent/utilities, and services come with hourly-rate and licensed flags — all from the same actor.
In one run you can pull:
- Autos — used cars, trucks, motorcycles, ATVs, RVs, boats, snowmobiles, classic cars, heavy equipment
- Real Estate — apartments for rent, condos for sale, houses, rooms for rent, vacation rentals, parking spots, land, commercial
- Jobs — full-time, part-time, casual, contract, internship, restaurant, healthcare, trades, IT, sales, customer service
- Services — moving, cleaning, tutoring, contractors, beauty, automotive repair, pet care, financial, legal
- Marketplace (Buy & Sell) — furniture, electronics, baby gear, clothing, sporting goods, tools, musical instruments, free stuff, collectibles
Every listing record includes a normalized price (CAD), location with city + province + lat/long, poster type (FSBO vs dealer/professional), top-ad/showcase flags, full image gallery URLs, and the original Kijiji URL — plus dozens of vertical-specific fields when applicable.
Why scrape Kijiji yourself when this exists?
Kijiji looks like a "simple" classifieds site, but engineering a stable scraper from scratch surfaces nine annoying problems within the first day:
- Kijiji.ca is a React/Next.js SPA — no clean HTML; data is buried inside
<script id="__NEXT_DATA__">JSON blobs that change shape periodically (results→listings→mainListings) - Non-standard pagination —
page-{N}URL segment inserted in the middle of the path, not a?page=Nquery - FSBO vs dealer distinction lives in the image-CDN URL pattern (
ca-prod-fsbo-adsvsca-prod-dealer-ads), not an obvious flag — most scrapers miss it entirely - Bilingual content — Quebec listings in French; auto vertical mixes "Berline"/"Sedan", "Manuelle"/"Manual" — requires language detection + normalization
- Vertical-specific fields aren't flat: cars have VIN/mileage/Carfax, apartments have bedrooms/utilities/pets, jobs have salary/remote — a generic scraper produces useless lowest-common-denominator rows
- Moderate anti-bot — datacenter IPs work intermittently; sustained scraping triggers 403/503 from Akamai. Canadian residential proxies are strongly recommended
- Top-ads, showcase, highlighted, repost flags pollute results — without filtering you double-count sponsored items
- VIP (View Item Page) detail enrichment requires a second HTTP request per listing with the right Referer header and respectful pacing — or you get throttled
This actor solves all of that: tolerant deep-search JSON parser, vertical-aware extraction, FSBO/dealer CDN detection, EN/FR language handling, page-based pagination, optional VIP enrichment, pacing controls, and full Apify proxy integration with CA residential defaults.
Quick Start
One-Click Run
- Open the Kijiji.ca Scraper on the Apify Store and click "Try for free"
- Paste a Kijiji search URL — for example
https://www.kijiji.ca/b-cars-trucks/gta-greater-toronto-area/c174l1700272 - Hit Start — listings stream into the dataset within seconds
- Download as JSON, CSV, Excel, HTML, XML, or RSS directly from the dataset view
API Run (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/kijiji-scraper").call(run_input={"mode": "search-urls","searchUrls": ["https://www.kijiji.ca/b-cars-trucks/gta-greater-toronto-area/c174l1700272","https://www.kijiji.ca/b-apartments-condos/city-of-toronto/c37l1700273"],"vertical": "auto","adSourceFilter": "fsbo-only","fetchDetails": True,"maxItems": 200,"maxPages": 5})for listing in client.dataset(run["defaultDatasetId"]).iterate_items():print(listing["title"], "—", listing["priceAmount"], "CAD —", listing["locationCity"])
API Run (Node.js / TypeScript)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/kijiji-scraper').call({mode: 'keyword-search',keyword: 'toyota corolla',categoryCode: 'c174',provinces: ['ON', 'QC'],minPrice: 5000,maxPrice: 15000,sortBy: 'priceAsc',adSourceFilter: 'fsbo-only',maxItems: 500,fetchDetails: true});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} private-seller Corollas across ON + QC`);
API Run (cURL)
curl -X POST "https://api.apify.com/v2/acts/haketa~kijiji-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "search-urls","searchUrls": ["https://www.kijiji.ca/b-apartments-condos/city-of-montreal/c37l1700281"],"vertical": "real-estate","fetchDetails": true,"maxItems": 100,"maxPages": 3}'
How It Works
Kijiji.ca is a React/Next.js application that hydrates its full listing payload into the page HTML inside a <script id="__NEXT_DATA__"> JSON blob. This actor exploits that fact instead of fighting it:
- HTTP fetch the search/category URL with
got-scraping(browser-like headers, TLS fingerprint, automatic redirect handling) - Extract the hydration JSON — primarily from
__NEXT_DATA__, with fallbacks to Apollo state and JSON-LD blocks - Deep-search the JSON tree with tolerant field discovery (handles
results,listings,mainListings,ads, etc. as Kijiji rotates names) - Detect the vertical from the category code (
c174→ autos,c37→ real-estate,c45→ jobs) or fall back to URL pattern inference - Parse with a vertical-aware extractor — cars get make/model/year/mileage/VIN/transmission; rentals get bedrooms/rent/utilities/pets; jobs get salary/employment type
- Detect FSBO vs dealer by inspecting image CDN URLs (
ca-prod-fsbo-ads/= private seller,ca-prod-dealer-ads/= professional) - Optionally visit each VIP (View Item Page) for full description, complete image gallery, VIN, Carfax link, amenities, features
- Follow pagination by injecting
page-{N}into the URL path (Kijiji's idiosyncratic structure) up to yourmaxPageslimit
Source URL structure
| Page Type | URL Pattern | Example |
|---|---|---|
| Category search | kijiji.ca/b-{category}/{location}/c{X}l{Y} | kijiji.ca/b-cars-trucks/gta-greater-toronto-area/c174l1700272 |
| Paginated | kijiji.ca/b-{category}/{location}/page-{N}/c{X}l{Y} | kijiji.ca/b-apartments-condos/city-of-toronto/page-3/c37l1700273 |
| Listing detail (VIP) | kijiji.ca/v-{category}/{city}/{slug}/{listingId} | kijiji.ca/v-cars-trucks/toronto/2018-honda-civic-touring/1234567890 |
Engineering details
- Pure HTTP — no Puppeteer, Playwright, Chromium, or
xvfb. Single Node process; tiny memory footprint - Tolerant JSON parser survives Kijiji's quarterly schema rotations via deep recursive field discovery
- Vertical inference — explicit category-code map + URL-pattern fallback (
/b-cars-trucks/,/b-apartments-condos/,/b-services/) - FSBO/dealer detection via image-CDN URL pattern matching (
ca-prod-fsbo-adsvsca-prod-dealer-adsvsca-prod-pro-ads) - Bilingual EN/FR language detection on description; province-aware (QC defaults to FR scoring boost)
- Price normalization — handles
$1,200/mo,$15 000,Gratuit,Please contact,Swap/Trade,Freeinto a clean numeric CAD value - Anti-bot pacing — configurable
requestDelay+maxConcurrency(default 500 ms / 3 parallel); Canadian residential proxy default - Repost detection — listings re-posted within 7 days flagged
isRepost: true. Underpriced detection — autos with price < 50% of category median getunderpricedFlag: true
Input Parameters
{"mode": "search-urls","searchUrls": ["https://www.kijiji.ca/b-cars-trucks/gta-greater-toronto-area/c174l1700272"],"vertical": "auto","keyword": "", "categoryCode": "", "provinces": ["ON"],"minPrice": 0, "maxPrice": 0, "sortBy": "dateDesc","adSourceFilter": "all", "language": "both","fetchDetails": false, "maxItems": 20, "maxPages": 2,"proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "CA"},"requestDelay": 500, "maxConcurrency": 3, "maxRetries": 3, "debugMode": false}
Parameter reference
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search-urls | search-urls crawls the exact Kijiji URLs you provide (most reliable). keyword-search auto-builds URLs from a keyword + province + category. |
searchUrls | array<string> | [] | Kijiji.ca search or category result URLs (used in search-urls mode). Paste any Kijiji search-result page URL. |
vertical | string | auto | Drives vertical-specific field extraction. Options: auto, marketplace, autos, real-estate, jobs, services. Use auto to infer from category code. |
keyword | string | "" | Free-text search term for keyword-search mode (e.g. macbook pro, 2 bedroom apartment, toyota camry). |
categoryCode | string | "" | Kijiji category code for keyword-search mode (e.g. c174 cars-trucks, c37 apartments-condos, c10 buy-and-sell, c30 motorcycles, c45 jobs, c72 services). |
provinces | array<string> | [] | Canadian province codes for keyword-search mode: ON, QC, BC, AB, MB, SK, NS, NB, NL, PE. Empty = all Canada. |
minPrice | integer | 0 | Minimum price in CAD. 0 = no minimum. |
maxPrice | integer | 0 | Maximum price in CAD. 0 = no maximum. |
sortBy | string | dateDesc | Result ordering: relevance, dateDesc (newest), priceAsc (cheapest), priceDesc (most expensive). |
adSourceFilter | string | all | all keeps everything. fsbo-only = For Sale By Owner (private sellers, ideal for flippers/bargain-hunting). dealer-only = professional/dealer listings. exclude-ebay = drop eBay cross-listings. |
language | string | both | Filter by detected description language: both, en (English only), fr (French only). Quebec listings are typically French. |
fetchDetails | boolean | false | Visit each listing's detail page (VIP) for full description, all images, VIN, features, amenities. Slower but much richer. |
maxItems | integer | 20 | Max total listings to scrape across all searches. 0 = unlimited. |
maxPages | integer | 2 | Max result pages per search URL. Each page returns ~20-40 listings. |
proxyConfiguration | object | CA residential | Defaults to Apify RESIDENTIAL group, country CA. Strongly recommended for sustained scraping. |
requestDelay / maxConcurrency / maxRetries | integer | 500 / 3 / 3 | Pacing knobs. Kijiji tolerates 3-8 parallel; 500 ms delay; retries on 403/503/429. |
debugMode | boolean | false | Verbose parser logging — dumps hydration JSON for the first page of each search. Useful when Kijiji changes page structure. |
Output Schema
Every listing returns the same flat JSON shape, with vertical-specific fields populated only when relevant. Generic fields apply to every listing; vertical fields populate only for that vertical (e.g. bedrooms is null for car listings).
Common fields (every listing)
| Field | Type | Description |
|---|---|---|
listingId | string | Kijiji-internal listing identifier (numeric ID in the URL) |
vertical | string | One of autos, real-estate, jobs, services, marketplace |
category / categoryCode / subCategory | string | Human-readable category, Kijiji code (c174, c37), and sub-category |
title / description / descriptionLang | string | Title, body (full when fetchDetails: true), detected language en or fr |
url / searchUrl | string | Canonical listing URL + source search URL it was found through |
priceRaw / priceAmount / priceCurrency / priceType / isNegotiable | mixed | Original string, numeric CAD value (null for "Please contact"/"Swap"), currency, type (fixed, contact, swap, free), OBO flag |
locationRaw / locationCity / locationProvince / locationId | string | Raw, parsed city, two-letter province (ON, QC, BC...), Kijiji location code |
latitude / longitude | number | Geo coordinates when published |
adSource | string | fsbo, dealer, pro, ebay, or unknown — derived from image CDN |
posterId / posterName / posterType | string | Seller identifiers; posterType is OWNER, DEALER, BUSINESS when surfaced |
isTopAd / isShowcase / isHighlighted | boolean | Sponsored placement flags |
activationDate / sortingDate / scrapedAt | string | ISO-8601 timestamps for posted, sort order, and extraction |
imageCount / thumbnailUrl / imageUrls | mixed | Image count, primary thumbnail, full gallery URLs |
hasPhone / phoneNumber | mixed | Phone availability + value when poster published it |
isRepost / priceDropped | boolean | Re-post within 7 days; price decrease vs historical context |
Vertical-specific fields
Autos (make, model, trim, year, mileageKm, transmission, fuelType, drivetrain, bodyType, color, condition, seats, doors, vin, carfaxLink, forSaleBy, dealerName, features[], underpricedFlag, categoryMedian, motivatedSeller) — covers Cars, Trucks, Motorcycles, RVs, Boats, ATVs. underpricedFlag fires when price < 50% of make/model/year median; motivatedSeller matches phrases like "must sell", "moving", "quick sale", "déménagement".
Real Estate (listingType, propertyType, bedrooms, bathrooms, rentMonthly, utilitiesIncluded[], furnished, petsAllowed, parkingType, sizeText, availableDate, agreementType, buildingAmenities[], managementCompany) — covers apartments, condos, houses, rooms, sublets, short-term, parking, commercial. bedrooms enum: Bachelor/Studio, 1, 2, 3, 4, 5+.
Jobs (jobTitle, company, jobType, salaryRaw, salaryMin, salaryMax, remote) — jobType enum: Full-time, Part-time, Contract, Casual, Internship, Seasonal. remote enum: On-site, Hybrid, Remote.
Services (serviceType, serviceProvider, serviceArea, hourlyRate, isLicensed) — covers moving, cleaning, tutoring, beauty, automotive, pet care, financial, legal.
Marketplace / Buy & Sell (itemCondition, brand, isFirmPrice, swapAvailable, deliveryAvailable) — itemCondition enum: New, Used, Used - Like New, Refurbished, For Parts.
Example records
Car listing (FSBO, Toronto):
{"listingId": "1700123456", "vertical": "autos", "categoryCode": "c174","title": "2018 Honda Civic Touring — Low KM, Clean Carfax", "descriptionLang": "en","url": "https://www.kijiji.ca/v-cars-trucks/toronto/2018-honda-civic-touring/1700123456","priceRaw": "$17,500", "priceAmount": 17500, "priceCurrency": "CAD", "priceType": "fixed", "isNegotiable": true,"locationCity": "Toronto", "locationProvince": "ON", "latitude": 43.7731, "longitude": -79.2578,"adSource": "fsbo", "posterType": "OWNER", "forSaleBy": "Owner","make": "Honda", "model": "Civic", "trim": "Touring", "year": 2018, "mileageKm": 78500,"transmission": "CVT", "fuelType": "Gasoline", "drivetrain": "FWD", "bodyType": "Sedan","vin": "2HGFC2F75JH599999", "carfaxLink": "https://www.carfax.ca/vhr/2HGFC2F75JH599999","features": ["Heated seats", "Sunroof", "Backup camera"],"underpricedFlag": false, "categoryMedian": 19200, "motivatedSeller": true,"imageCount": 14, "scrapedAt": "2026-05-16T12:00:00.000Z"}
Apartment rental (Montreal, French):
{"listingId": "1700987654", "vertical": "real-estate", "categoryCode": "c37","title": "Beau 4½ rénové — Plateau Mont-Royal — Disponible 1er juillet", "descriptionLang": "fr","url": "https://www.kijiji.ca/v-apartments-condos/ville-de-montreal/4-renove-plateau/1700987654","priceRaw": "1 850 $", "priceAmount": 1850, "priceCurrency": "CAD","locationCity": "Montreal", "locationProvince": "QC","adSource": "fsbo", "listingType": "for-rent", "propertyType": "Apartment","bedrooms": "2", "bathrooms": "1", "rentMonthly": 1850,"utilitiesIncluded": ["Heat", "Hot water"], "furnished": "No", "petsAllowed": "Limited","sizeText": "750 sqft", "availableDate": "2026-07-01", "buildingAmenities": ["Laundry"],"imageCount": 9, "scrapedAt": "2026-05-16T12:00:00.000Z"}
Category & Vertical Reference
Top Kijiji vertical → category code map
| Vertical | Category Codes | Coverage |
|---|---|---|
| Autos | c27 (root), c174 cars/trucks, c30 motorcycles, c171 RVs, c172 ATVs/snowmobiles, c173 boats, c175 parts | Cars, trucks, SUVs, bikes, powersports, marine, parts |
| Real Estate | c34 (root), c37 apartments-rent, c35 houses-sale, c643 rooms/roommates, c785 short-term | Rentals, sales, rooms, vacation rentals |
| Marketplace | c10 Buy & Sell (root) | Furniture, electronics, baby gear, clothing, tools, free stuff |
| Jobs | c45 Jobs (root) | Full-time, part-time, casual, contract, internship |
| Services | c72 Services (root) | Moving, cleaning, tutoring, beauty, automotive |
Ad source values and price types
| Enum | Values | Notes |
|---|---|---|
adSource | fsbo (private seller via ca-prod-fsbo-ads CDN), dealer (licensed auto dealer), pro (other professional), ebay (cross-posted from eBay Canada), unknown | Best filter for flippers (fsbo-only) vs B2B (dealer-only) |
priceType | fixed (numeric), contact/please-contact (no number disclosed), swap (swap/trade only), free (À donner), negotiable (OBO) | When priceType != "fixed", priceAmount will be null |
Use Cases
Reseller Arbitrage & Flipping
Power-resellers and side-hustle flippers use Kijiji data to spot mispriced items every morning before competitors:
- Pull all FSBO furniture/electronics under $200 in your metro with
adSourceFilter: "fsbo-only"andmaxPrice: 200 - Detect underpriced cars via the
underpricedFlag(set when price is <50% of make/model/year median) - Watch for
motivatedSellerlanguage (must sell,moving,quick sale,déménagement) to time low-ball offers - Diff today vs yesterday to catch newly-listed items in the first hour, when private-seller deals still exist
- Cross-reference with eBay, Facebook Marketplace, OfferUp to identify items priced 30%+ below comparable platforms
Used-Car Dealers & Auto Flippers
Independent dealers, wholesalers, and auction buyers use the autos vertical for live market intelligence:
- Aggregate every FSBO Civic/Camry/F-150 across Toronto, Mississauga, Hamilton, Ottawa — the daily wholesale acquisition pool
- Track dealer competitor inventory with
adSourceFilter: "dealer-only"— see who is listing what, at what price - Monitor mileage/price distributions by make/model/year for accurate appraisal benchmarks
- Pipe Carfax links and flag salvage/rebuilt titles via the
carfaxLinkandconditionfields for risk-aware sourcing
Real Estate, Rental & Property Research
Renters, landlords, PropTech analysts, and immigration relocation consultants use Kijiji for ground-truth rental data:
- Build a live rent index for Toronto, Montreal, Vancouver, Calgary by
bedroomsandpropertyType - Map utilities-included rentals vs hydro-extra (huge cost difference in Ontario apartments)
- Track pets-allowed inventory for relocators with pets — a chronic Canadian rental pain point
- Spot new-build supply by tracking
managementCompanyandbuildingAmenitiesarrays - Cross-promote with our Realtor.ca scraper for the for-sale side of the Canadian market
Brand & Counterfeit Monitoring
Brand-protection teams at consumer-electronics, fashion, sporting-goods, and beauty companies monitor Kijiji for unauthorised resale:
- Track listings mentioning your brand across all five verticals daily
- Detect unauthorized refurbishers, grey-market dealers, suspiciously-priced "new in box" inventory
- Capture poster IDs to identify repeat offenders (one
posterIdlisting 200+ of your products is a red flag) - Document evidence with full image galleries for takedown notices
Immigration & Relocation Services
Newcomer-services agencies, settlement workers, and relocation consultants advise on Canadian living costs using fresh Kijiji data:
- Generate up-to-date "cost of living" briefings with median rents, used-car prices, furniture costs by metro
- Build neighbourhood comparison reports (Plateau vs Verdun, Yorkville vs Liberty Village, Kitsilano vs Mount Pleasant)
- Help newcomers source affordable household setup — from beds and dishes to bicycles and winter tires
- Identify French-only listings in Quebec for francophone newcomers (
language: "fr") - Monitor sublet & roommate listings (
categoryCode: "c643") for short-term arrivals
Market Research & Retail Strategy
Retailers, CPG brands, and market researchers use second-hand pricing as a leading indicator:
- Resale price index for high-ticket items (mattresses, fridges, sofas, e-bikes) — measures real-world depreciation
- Trend detection — sudden spike in "Peloton for sale" listings predicts retail demand collapse
- Inflation tracking — used-good prices respond faster than retail; great proxy for household discretionary spending
- Geo-pricing analytics — same product, different price in Calgary vs Halifax, reveals regional purchasing power
Recruiting, Services & Workforce Intelligence
Recruiters, home-services aggregators, gig-economy operators, and insurers mine the jobs + services verticals:
- Find side-hustle, casual, weekend, and under-the-table roles that LinkedIn and Indeed never surface
- Map blue-collar and trades demand by metro (electricians, drivers, restaurant staff, caregivers, movers)
- Hourly-rate benchmarking for trades, cleaning, beauty, and tutoring via the
hourlyRatefield - Identify licensed vs unlicensed providers via
isLicensedfor compliance research
Journalism, Public Interest & Academic Research
Journalists at the Globe and Mail, CBC, Toronto Star, Le Devoir, and academic researchers use Kijiji data to report on:
- Housing affordability crises — Vancouver rentals over $3,000, Toronto bachelors over $1,800
- Rental discrimination — pet/income/family-status language patterns across listings
- Used-vehicle market shifts — EV resale, post-pandemic SUV demand
- Cost-of-living comparisons across Canadian regions for explanatory journalism
Insurance & Risk Underwriting
Auto and property insurers correlate Kijiji data with policy risk:
- Detect "for sale" vehicles still appearing on policies (insurance fraud / lapse risk)
- Benchmark replacement values for total-loss claims using live FSBO prices
- Identify rental properties misclassified on homeowner policies
- Monitor stolen-goods aggregation patterns for cargo / commercial property recoveries
Sample Queries & Recipes
Recipe 1: Every FSBO Honda Civic 2015-2019 under $18K across Ontario
{ "mode": "keyword-search", "keyword": "honda civic", "categoryCode": "c174","provinces": ["ON"], "minPrice": 5000, "maxPrice": 18000,"sortBy": "priceAsc", "adSourceFilter": "fsbo-only", "fetchDetails": true, "maxItems": 500 }
Recipe 2: All 2-bedroom apartments under $2,200 in Montreal
{ "mode": "search-urls","searchUrls": ["https://www.kijiji.ca/b-apartments-condos/city-of-montreal/c37l1700281"],"vertical": "real-estate", "maxPrice": 2200, "language": "both","fetchDetails": true, "maxPages": 10 }
Recipe 3: Newest Vancouver Buy & Sell listings under $100
{ "mode": "search-urls","searchUrls": ["https://www.kijiji.ca/b-buy-sell/city-of-vancouver/c10l1700287"],"vertical": "marketplace", "maxPrice": 100, "sortBy": "dateDesc","maxItems": 200, "maxPages": 5 }
Recipe 4: Dealer truck inventory in GTA (sales prospecting)
{ "mode": "search-urls","searchUrls": ["https://www.kijiji.ca/b-cars-trucks/gta-greater-toronto-area/truck/c174l1700272"],"vertical": "autos", "adSourceFilter": "dealer-only","fetchDetails": true, "maxItems": 1000, "maxPages": 25 }
Recipe 5: French-only jobs in Quebec City (immigration / market research)
{ "mode": "search-urls", "searchUrls": ["https://www.kijiji.ca/b-emploi/ville-de-quebec/c45l1700124"], "vertical": "jobs", "language": "fr", "fetchDetails": true, "maxItems": 300 }
Recipe 6: Calgary movers — hourly rate benchmarking
{ "mode": "search-urls", "searchUrls": ["https://www.kijiji.ca/b-moving-storage/calgary/c105l1700199"], "vertical": "services", "fetchDetails": true, "maxItems": 100 }
Recipe 7: Test sample — 25 listings before committing to a full scrape
{ "mode": "search-urls", "searchUrls": ["https://www.kijiji.ca/b-cars-trucks/canada/c174l0"], "maxItems": 25, "maxPages": 1 }
Integration Examples
Google Sheets
Apify schedule + the "Export to Google Sheets" integration delivers a fresh Kijiji dataset to your Sheet every morning — perfect for reseller daily-scan workflows.
Make.com / Zapier / n8n
Use the Apify connector on any major automation platform. Common triggers: new FSBO listings under $X in your category (alert to Telegram/Slack/SMS), price drops (priceDropped: true), dealer competitor adding inventory (auto-CRM record), French Quebec listing spike in a category.
Power BI / Tableau / Looker
Hook the Apify dataset API as a live data source. Common dashboards: used-car median price heat map by metro and make, rent affordability index across provinces, FSBO vs dealer mix by vertical and city, top-poster leaderboard for brand-monitoring, listing churn rate per category per week.
Postgres / Snowflake / BigQuery
Use Apify's webhook integration to POST run results into your warehouse staging tables — clean upsert keyed on listingId.
CRM Enrichment (Salesforce / HubSpot) and Telegram/Discord Bots
Nightly job pulls every dealer/service-provider listing, dedupes on posterId, and upserts as Lead records — Canadian sales-prospect list refreshed daily. For real-time reseller alerts, schedule the actor every 15 minutes with a tight filter (FSBO + max price + city) and POST new listingIds to a Telegram bot via Apify webhook.
Major Canadian Markets at a Glance
| Metro Area | Province | Population | Kijiji Significance |
|---|---|---|---|
| Toronto / GTA | ON | 6.6M | Highest listing volume nationally — every vertical |
| Montreal | QC | 4.3M | Largest French-language vertical, strong rentals + autos |
| Vancouver | BC | 2.6M | Highest used-car and rental prices in Canada |
| Calgary | AB | 1.6M | Strong auto vertical (trucks, RVs, oilfield equipment) |
| Edmonton | AB | 1.5M | Heavy trades-services demand, strong buy-and-sell |
| Ottawa | ON | 1.5M | Federal-employee rentals; bilingual EN/FR mix |
| Quebec City | QC | 0.85M | French-only rental and jobs market |
| Winnipeg | MB | 0.83M | High-volume buy & sell, low average prices |
| Hamilton / Mississauga | ON | 1.5M combined | GTA spillover rentals, heavy newcomer demand |
| Kitchener-Waterloo / London | ON | 1.1M combined | Tech-driven rentals, affordable used-car markets |
| Halifax / Victoria / Saskatoon / Regina | NS / BC / SK | 1.4M combined | Maritime, Island, Prairies vertical mix |
Top Kijiji search-URL locations (location IDs)
| Location | Code | Use in URL |
|---|---|---|
| All of Canada | l0 | kijiji.ca/b-cars-trucks/canada/c174l0 |
| Ontario | l9004 | kijiji.ca/b-cars-trucks/ontario/c174l9004 |
| GTA Greater Toronto | l1700272 | kijiji.ca/b-cars-trucks/gta-greater-toronto-area/c174l1700272 |
| City of Toronto | l1700273 | kijiji.ca/b-apartments-condos/city-of-toronto/c37l1700273 |
| City of Montreal | l1700281 | kijiji.ca/b-apartments-condos/city-of-montreal/c37l1700281 |
| Vancouver | l1700287 | kijiji.ca/b-buy-sell/city-of-vancouver/c10l1700287 |
| Calgary | l1700199 | kijiji.ca/b-cars-trucks/calgary/c174l1700199 |
| Quebec City | l1700124 | kijiji.ca/b-emploi/ville-de-quebec/c45l1700124 |
| Edmonton | l1700203 | kijiji.ca/b-cars-trucks/edmonton/c174l1700203 |
| Ottawa | l1700185 | kijiji.ca/b-apartments-condos/ottawa/c37l1700185 |
Cost & Performance
| Metric | Value |
|---|---|
| Engine | Pure HTTP + __NEXT_DATA__ JSON hydration parse (no browser) |
| Runtime | ~15-30 s for 50 listings, 2-4 min for 500, 8-15 min for 500 with VIP details |
| Pricing model | Pay-per-event (transparent per-listing pricing) |
| Data freshness | Live at run time |
| Auth required | None |
| Proxy | Recommended — Apify RESIDENTIAL CA by default; datacenter works partially |
| Concurrency | 1-10 parallel (default 3, sweet-spot 5-8 with residential proxy) |
| Memory footprint | 256-512 MB for most runs; 1024 MB for >5K items |
Compliance, Privacy & Legal Notes
- Public data only — every field is published openly by Kijiji on listing pages with no login required
- No PII beyond what posters voluntarily publish — phone numbers and seller names appear only when the poster chose to display them
- No scraping of private messages, watch lists, or logged-in seller dashboards
- Respect
robots.txtand Terms of Service — Kijiji permits crawling of public listing pages; the actor honours standard request hygiene (pacing, retries with backoff). Consult Kijiji's ToS and your jurisdiction's data-protection laws (PIPEDA, GDPR, CCPA) before commercial use - Image URLs point to Kijiji's media CDN — treat as references, not redistributable assets (copyright belongs to posters)
- Phone numbers when collected must comply with Canada's Anti-Spam Legislation (CASL) and PIPEDA — unsolicited commercial contact without consent is illegal in Canada
- Quebec's Bill 96 / Charter of the French Language applies if you republish listing data in commercial Quebec markets
- This actor is intended for legitimate market research, journalism, lead generation, brand-monitoring, and personal use — not for harassment, fraud, or identity-theft
Important: Kijiji data must not be used for unlawful purposes. Compliance with applicable Canadian and provincial laws (PIPEDA, CASL, Quebec Bill 25, Ontario Consumer Protection Act) is the responsibility of the data consumer. The actor author makes no warranty of fitness for any specific commercial purpose.
Frequently Asked Questions
How fresh is the data?
Live at run time. Every run fetches Kijiji.ca's current listing pages directly — there is no cached intermediate database. A listing that goes up two minutes before your run will appear in the dataset.
How many records will I get per run?
Depends entirely on your inputs. A single search page returns 20-40 listings; pagination scales linearly. Typical configurations: 100-2,000 listings per run. Heavy-duty configurations can pull 10,000+ per run with sufficient maxItems, maxPages, proxy concurrency, and runtime.
Does this scraper require a Kijiji account or API key?
No. Kijiji's public listing pages are scraped without login. You only need an Apify account to run the actor.
Does Kijiji rate-limit or block scraping?
Yes — moderate anti-bot via Akamai. Datacenter IPs work intermittently. The actor's default config uses Apify's Canadian residential proxy group with conservative concurrency (3 parallel) and 500 ms delays — this is sustainable for thousands of listings per run.
How do I get the URL for my search?
Open kijiji.ca in your browser, run the search (category, location, filters), and copy the URL from the address bar. Paste into searchUrls. The actor preserves all of your category, location, and filter parameters.
Does this work for Quebec / French listings?
Yes. The actor handles French listings natively — French price formats (1 200 $), French location names (Ville de Québec, Saguenay), French descriptions. Use language: "fr" to filter to French-only or language: "both" for full coverage.
Can it scrape detail (VIP) pages with full descriptions and image galleries?
Yes — set fetchDetails: true. The actor will visit each listing's VIP page for full description, complete image gallery, VIN/Carfax (autos), full amenities (real estate), and feature lists. Runtime increases proportionally because of the extra HTTP request per listing.
How does FSBO vs dealer detection work?
Kijiji serves listing images from different CDN paths depending on poster type: media.kijiji.ca/api/v1/ca-prod-fsbo-ads/ for private sellers, ca-prod-dealer-ads/ for dealers, ca-prod-pro-ads/ for other professionals. The actor inspects image URLs to set adSource. Use adSourceFilter: "fsbo-only" to keep just private sellers.
Can I scrape only listings posted in the last 24 hours, or apply Kijiji's native filters?
Sort with sortBy: "dateDesc" and cap maxPages low (1-2), then filter downstream on activationDate. For built-in Kijiji filters (price, condition, year, mileage), apply them in the UI and paste the resulting URL into searchUrls — Kijiji's native filter engine is preserved.
How do I export the data and schedule recurring runs?
Standard Apify formats: JSON, CSV, Excel, HTML, XML, RSS, JSON Lines. Apify's built-in Scheduler supports any cron expression — daily 6 AM ET for full inventory, every 15 minutes for hot-deal Telegram alerts, weekly Sunday for market reports.
Does the actor deduplicate?
Yes — within a single run, listings are deduped by listingId. Across runs, persist listingId to your warehouse and upsert.
What happens if Kijiji changes its page structure?
The actor uses a tolerant deep-search JSON parser that survives most schema rotations (results → mainListings → listings). For larger changes, enable debugMode: true and the actor dumps the full hydration JSON structure so you (or we) can patch field discovery.
Does it work on the Apify Free Plan?
Yes — full functionality on the free tier. A 50-100 listing test run completes in well under a minute and costs a tiny fraction of free monthly credits.
Does this scrape Kijiji Centrale or Kijiji Autos (the new auto-specific portal)?
This actor focuses on the main kijiji.ca classifieds. The new Kijiji Autos portal at kijiji.ca/autos has overlapping data, but for the cleanest auto-only flow use the standard search URLs under the c174 category code.
Are buyer messages, watchlists, or seller email addresses included?
No. The actor only extracts data Kijiji publishes openly on listing pages. Buyer messages, watchlists, and seller emails are private and never scraped.
How does pay-per-event pricing work?
You're charged a small amount per actor start and per listing delivered. No monthly minimums. A 100-listing scrape costs pennies; a 10,000-listing daily job is still well under the cost of comparable paid classifieds APIs.
How do I report a bug or request a feature?
Open an issue on the Apify Store actor page or contact the developer through the Apify Console. Include the exact searchUrls input that failed plus the run ID — fastest path to a fix.
Related Apify Actors by Haketa
If you need classifieds, marketplace, or Canadian property data from other regions, check these companion actors:
- Realtor.ca Scraper (Canada) — Canadian for-sale + for-rent residential properties from Canada's national MLS portal (sibling to Kijiji's real-estate vertical)
- Kleinanzeigen.de Scraper (Germany) — Germany's #1 classifieds (formerly eBay Kleinanzeigen)
- Marktplaats.nl Scraper (Netherlands) — Netherlands' dominant classifieds marketplace
- OfferUp Scraper (US) — US local-marketplace listings, ideal for cross-border arbitrage
- TradeMe Scraper (New Zealand) — New Zealand's largest classifieds + auction site
- Lelong.my Scraper (Malaysia) and Chotot.com Scraper (Vietnam) — Southeast Asian classifieds platforms
- Mourjan Scraper (MENA) — Middle East / North Africa classifieds
- Rent.com Scraper and Apartments.com Scraper — US apartment rentals for cross-border analytics
- BBB Business Scraper — Better Business Bureau profiles for cross-border business verification
Comparison vs. Alternatives
| Approach | Setup time | Maintenance | Vertical-aware | FSBO/dealer detection | Bilingual EN/FR | Proxy mgmt |
|---|---|---|---|---|---|---|
| This actor | < 1 minute | Zero | Built-in (5 verticals) | Built-in via image CDN | Built-in | Built-in (CA residential) |
| Manual Kijiji browsing | Instant | None | Eyeball only | None | None | N/A |
| Custom Python + BeautifulSoup | 4-12 hours | Breaks weekly | DIY | DIY (most miss) | DIY | DIY |
| Custom Puppeteer/Playwright | 2-4 days | High | DIY | DIY | DIY | DIY |
| Paid third-party classifieds API | Hours to onboard | Vendor lock-in | Limited | Sometimes | Rarely | Included |
| Browser-extension scrapers | Minutes | High | None | None | None | None |
Why Pay-Per-Event Pricing?
Most scrapers either lock you into a flat monthly subscription (pay even when idle) or per-Compute-Unit (unpredictable per-run cost). This actor uses pay-per-event:
- You only pay when the actor runs and produces results
- Charges scale linearly with how many listings you actually consume
- Transparent line-item billing inside Apify
- No monthly minimums — perfect for ad-hoc reseller flips or seasonal research
- Free to evaluate — sample with
maxItems: 25for a fraction of a cent - Combine with Apify's Scheduler to keep daily costs predictable
Changelog
| Version | Date | Notes |
|---|---|---|
| 1.0.0 | 2026-05 | Initial public release — pure HTTP architecture, 5 verticals (autos / real-estate / jobs / services / marketplace), FSBO/dealer detection via image-CDN inspection, bilingual EN/FR handling, vertical-aware schema, optional VIP detail enrichment, pay-per-event pricing |
Keywords
Kijiji scraper · Kijiji.ca data · Kijiji.ca scraper · Canada classifieds API · Canada classifieds scraper · Toronto Montreal Vancouver classifieds data · Kijiji car listings scraper · Kijiji apartments rentals data · CA marketplace extractor · Kijiji lead generation · Kijiji.ca extraction API · Kijiji FSBO scraper · Kijiji dealer inventory scraper · Kijiji used car data · Kijiji apartment rental data · Kijiji Toronto scraper · Kijiji Montreal scraper · Kijiji Vancouver scraper · Kijiji Calgary scraper · Kijiji Ottawa scraper · Canadian classifieds data extraction · Canada used car prices API · Canadian rental market data · Kijiji autos scraper · Kijiji real estate scraper · Kijiji jobs scraper · Kijiji services scraper · Kijiji buy and sell scraper · Kijiji Quebec scraper · Kijiji bilingual EN FR scraper · Canada marketplace data · Kijiji price monitoring · Kijiji new listing alerts · Canadian classifieds API · Kijiji daily scrape · Apify Kijiji actor · Kijiji JSON export · Kijiji CSV export · Canada reseller arbitrage data · Canada car flipping scraper · Canadian brand monitoring · Kijiji.ca pagination scraper · Kijiji.ca NEXT_DATA parser
Support
- Bug reports: Open an issue on the Apify Store actor page
- Feature requests: Same place — describe your use case (vertical, metro, filters) for the fastest turnaround
- Direct contact: Reach the developer through the Apify Console developer profile
If this actor saves you time, a 5-star rating on the Apify Store helps other Canadian resellers, dealers, recruiters, brand teams, and PropTech analysts discover it. Thank you!