
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape kijiji.ca listings by search URL, keyword, category and location: price, full description, attributes, location with coordinates, images, views, dates and seller type. No login needed.
Scrape listings from kijiji.ca, Canada's largest classifieds site: cars, real estate, rentals, jobs, pets and everything in Buy & Sell. Paste any search or listing URL, or just type keywords and pick a category, location and price range. Every listing comes back with price, full description, labelled attributes (make, model, mileage, bedrooms, square footage...), address with coordinates, all photos, posted date, view count and seller type. No login needed.
| Field | What it does |
|---|---|
startUrls | Kijiji search result URLs (filters in the URL are kept) and/or listing URLs. |
searchQueries | Keywords, one per line. |
maxItems | Maximum listings per run (default 20). |
location, locationId | Province or major city, or any Kijiji location ID (the number after l in a search URL). |
category | Kijiji category (Cars & Trucks, Condos for Sale, Long Term Rentals, Jobs, ...). |
minPrice, maxPrice | Price range in Canadian dollars. |
sellerType | Everyone, owners only or dealers only. |
sortBy | Relevance, newest, oldest, price low to high, price high to low. |
includeDetails | Opens every listing for the full description, view count and attribute labels (on by default). |
{
"searchQueries": ["honda civic"],
"category": "174",
"location": "ontario",
"minPrice": 5000,
"maxPrice": 15000,
"sellerType": "owner",
"sortBy": "newest",
"maxItems": 100
}
| Field | Description |
|---|---|
id, url, title | Listing ID, link and title |
description | Full description (shortened search-card text when details are off) |
priceAmount, currency, price | Price in CAD, plus the raw price object (amount in cents, type, original price) |
categoryId, categoryName | Kijiji category |
locationName, address, latitude, longitude, location | Where the item is (real estate adds neighbourhood info) |
activationDate, sortingDate, endDate | Posted, last bumped and expiry dates |
imageUrl, imageUrls, imageCount | Main photo, all photos (960 px) and count |
attributes, attributesMap | All attributes with labels and values, and as a simple name → value map |
views, isTopAd, adSource, flags | View count, promotion info and listing flags |
poster | sellerType and isCommercial; for business sellers also name, website, phone and listing count |
status, type, youtubeVideoId, virtualTourUrl | Status, offer or wanted, video and virtual tour |
Example (fictional data, same shape as real output):
{
"id": "1700000001",
"url": "https://www.kijiji.ca/v-cars-trucks/london/2014-honda-civic-lx/1700000001",
"title": "2014 Honda Civic LX",
"description": "Well kept 2014 Civic LX, 148,000 km, winter tires on rims included. Safety certified.",
"priceAmount": 8900,
"currency": "CAD",
"price": { "type": "FIXED", "amount": 890000, "currency": "CAD", "originalAmount": null, "surcharges": "NO_TAX" },
"categoryId": 174,
"categoryName": "Cars & Trucks",
"locationName": "London",
"address": "London, ON N6A 1A1",
"latitude": 42.98,
"longitude": -81.25,
"activationDate": "2026-10-12T15:20:00.000Z",
"sortingDate": "2026-10-12T15:20:00.000Z",
"endDate": "2026-12-11T15:20:00.000Z",
"status": "ACTIVE",
"type": "OFFER",
"adSource": "ORGANIC",
"isTopAd": false,
"imageUrl": "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/00/00000000-0000-0000-0000-000000000001?rule=kijijica-960-webp",
"imageCount": 8,
"attributesMap": {
"carmake": "Honda", "carmodel": "Civic", "caryear": "2014", "carmileageinkms": "148000",
"cartransmission": "Automatic", "carbodytype": "Sedan", "forsaleby": "Owner"
},
"views": 212,
"poster": { "sellerType": "FSBO", "isCommercial": false, "verified": false },
"detailsScraped": true
}
You pay $0.50 per 1,000 listings ($0.0005 per listing), plus the platform usage of the run (compute and proxy traffic), which is small for this actor.
Example: 1,000 listings with details ≈ $0.50 in listing fees plus about $0.07 of usage (proxy traffic and compute), so about $0.57 in total. Runs with details off load one page per 40 listings instead of one page per listing, so they are faster and use less proxy traffic.
Is it legal to scrape Kijiji? The actor only reads public listing pages that anyone can open without an account. It does not collect private sellers' names or phone numbers. Check that your use of the data follows Kijiji's terms and Canadian privacy law (PIPEDA).
Do I need a Kijiji account or my own proxy? No. No login is used, and the built-in datacenter proxy works. If Kijiji rate-limits it, the run switches to Canadian residential proxies on its own.
How many listings can I get? Kijiji pages through about 4,000 listings per search (101 pages of 40). Add several searches to one run to collect more. For bigger sets, split the search by category, location or price range; the run tells you when a search hits that ceiling.
Why are some fields empty? Kijiji only fills what the seller entered: many ads have no coordinates, video or virtual tour. With details off, the description is the shortened search-card text and views are missing.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it (for example daily with sort by newest), and read the dataset through the API or integrations.
Can I get the seller's phone number? Only for business sellers, and only as Kijiji displays it (partly masked). Private sellers are reported by seller type only.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalKijiji URLs
Kijiji search result URLs (any category, location, keyword and filters: copy them from your browser) and/or single listing URLs (https://www.kijiji.ca/v-.../1234567890). Search results are paginated automatically.
searchQueriesarrayOptionalSearch keywords
Keywords to search on Kijiji, one per line (e.g. 'iphone 15', 'condo'). Combined with the filters below. You can leave this empty and only set a category and/or location.
maxItemsintegerOptionaldefault 20Max listings
Maximum number of listings to save across all inputs. Kijiji pages through about 4,000 listings per search (101 pages of 40).
These filters apply to the keywords above. For start URLs, set the filters on kijiji.ca and copy the URL.
locationenumOptionalLocation
Province or major city to search in (empty = all of Canada). For any other place, use 'Location ID' or paste a search URL.
locationIdintegerOptionalLocation ID
Kijiji location ID (the number after 'l' at the end of a search URL, e.g. 1700214 for London, ON in .../c174l1700214). Overrides 'Location'.
categoryenumOptionalCategory
Kijiji category to search in (empty = all categories).
minPriceintegerOptionalMin price (CAD)
Lowest price in Canadian dollars.
maxPriceintegerOptionalMax price (CAD)
Highest price in Canadian dollars.
sellerTypeenumOptionalSeller type
Only private owners or only dealers/businesses (works in categories that have the 'For Sale By' filter, such as cars and real estate).
sortByenumOptionalSort by
Order of the search results. Kijiji's default is used when empty.
includeDetailsbooleanOptionaldefault trueInclude listing details
Open every listing page for the full description, view count, attribute labels and business seller details. Turn off for faster, cheaper runs that use the search card data only (description is shortened).
maxConcurrencyintegerOptionaldefault 20Max concurrency
How many pages to load at the same time.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for Kijiji. The run switches to residential (Canada) on its own if Kijiji starts rate-limiting.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | null | Listing ID |
| url | string | null | Listing URL |
| title | string | null | Title |
| description | string | null | Description (full text when details are on) |
| priceAmount | number | null | Price in Canadian dollars |
| currency | string | null | Currency |
| price | object | null | Raw price object (amount in cents, type, original amount) |
| categoryId | number | null | Kijiji category ID |
| categoryName | string | null | Category name |
| locationName | string | null | City / area |
| address | string | null | Address as shown |
| latitude | number | null | Latitude |
| longitude | number | null | Longitude |
| location | object | null | Location object (with neighbourhood info for real estate) |
| activationDate | string | null | First posted |
| sortingDate | string | null | Last bumped / sorting date |
| endDate | string | null | Expiry date |
| status | string | null | Status |
| type | string | null | OFFER or WANTED |
| adSource | string | null | ORGANIC or TOP_AD |
| isTopAd | boolean | null | Promoted top ad |
| imageUrl | string | null | Main image URL |
| imageCount | number | null | Number of images |
| imageUrls | array | null | Image URLs |
| attributes | array | null | Attributes with labels and values |
| attributesMap | object | null | Attributes as name -> value |
| views | number | null | View count |
| metrics | object | null | Metrics |
| flags | object | null | Listing flags |
| poster | object | null | Seller type; business name, website and phone for business sellers only |
| externalSource | object | null | External source |
| youtubeVideoId | string | null | YouTube video ID |
| virtualTourUrl | string | null | Virtual tour URL |
| productUrl | string | null | Product URL |
| detailsScraped | boolean | null | Whether the listing page was opened |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One Kijiji listing saved to the dataset. | $0.0005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/kijiji-scraper').call({
"startUrls": [
"https://www.kijiji.ca/b-cars-trucks/ontario/honda-civic/k0c174l9004"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/kijiji-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/kijiji-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Listings from a Kijiji search URL with full details.
Keyword search with location, category and price range, newest first.
Cars from dealers only, cheapest first.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.