# 🇨🇦 kijiji website canada($0.77) (`jordan-byte/kijiji-website-canada-0-77`) Actor

Canada's largest online classifieds site, covering cars & vehicles, real estate, jobs, and general buy & sell listings in every city and province. Hand it category pages, keyword search pages, or specific listing URLs, and get back clean, structured data for every matching ad

- **URL**: https://apify.com/jordan-byte/kijiji-website-canada-0-77.md
- **Developed by:** [Jordan Byte](https://apify.com/jordan-byte) (community)
- **Categories:** E-commerce, Jobs, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.77 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

🇨🇦 Extract structured listing data from **Kijiji.ca** — Canada's largest online classifieds site, covering cars & vehicles, real estate, jobs, and general buy & sell listings in every city and province. Hand it category pages, keyword search pages, or specific listing URLs, and get back clean, structured data for every matching ad: title, price, description, images, location, seller details, category-specific attributes, and more.

⚡ Built to run on the Apify platform, so you get scheduled runs, an API, webhooks, and integrations (Zapier, Make, Google Sheets, and 30+ others) out of the box — no server, browser, or maintenance required on your end.

💬 Need a custom scraper or a different Apify Actor built? I build these for a living — see **Support & custom development** below to get in touch.

### Why use the Kijiji.ca Scraper?

Manually browsing Kijiji.ca doesn't scale once you need more than a handful of listings, and the site's own search only shows so much on one page. This Actor is built for anyone who needs Kijiji listing data in bulk and on a schedule:

- 🚗 **Car shoppers & dealers** — track vehicle inventory and pricing by make, model, or city.
- 🏠 **Renters, landlords & real estate researchers** — monitor new rental and for-sale listings the moment they go up.
- 💼 **Recruiters & job-market researchers** — collect job postings by category, title, or location.
- 📊 **Market & price researchers** — build pricing datasets across any category Kijiji covers.
- 📇 **Lead generation** — collect seller/dealer contact details attached to live listings.

Because it runs on Apify, you can schedule it to run daily or hourly, feed the results straight into a spreadsheet or database, and only pay for what you actually scrape.

### How to scrape Kijiji.ca listing data

1. Click **Try for free** (or **Start**) to open the Actor.
2. On the **Input** tab, paste one or more Kijiji.ca URLs into **Start URLs** — this can be a category page (e.g. `kijiji.ca/b-cars-trucks/canada/c174l0`), a keyword search page, or specific listing URLs you already have.
3. Set a **Max items** limit (or leave it at `0` to collect every listing found).
4. Leave **Scrape full listing details** on for complete data (seller name/phone, full description, view count), or turn it off for a faster, lighter scrape using only search-result data.
5. Click **Start** and wait for the run to finish.
6. Open the **Dataset** tab (or the **Output** tab) to preview, filter, and download your results as JSON, CSV, Excel, HTML, or XML.

No coding required — though everything here is also available through the Apify API if you want to automate it.

### Input

All input options are configured through the **Input** tab in the Apify Console (or as a JSON object via the API).

| Field                  | Description                                                                                                                                                                                |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `startUrls`            | Kijiji.ca category/search pages to crawl, and/or specific listing URLs to scrape directly.                                                                                                 |
| `maxItems`             | Stop after this many listings. Set to `0` to scrape every listing in that category/search - the Actor will keep paging through results until there's nothing left to find.                 |
| `scrapeListingDetails` | Visit each listing's own page for the full description, seller name/phone, view count, and human-readable attributes. Turn off for a faster, lighter scrape using only search-result data. |
| `proxyConfiguration`   | Proxy servers used to fetch listings. Apify Proxy is enabled by default; a Residential group is recommended for large runs.                                                                |

Example input:

```json
{
    "startUrls": [
        { "url": "https://www.kijiji.ca/b-cars-trucks/canada/c174l0" },
        { "url": "https://www.kijiji.ca/b-real-estate/toronto-gta/c34l1700273" }
    ],
    "maxItems": 500,
    "scrapeListingDetails": true
}
```

### Output

Each scraped listing is saved as one item in the Actor's dataset. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Example output item:

```json
{
    "id": "1733974129",
    "title": "2025 Hyundai Elantra Luxury Two-Tone Interior | CLEAROUT PRICING",
    "description": "Crowfoot Hyundai, AMVIC Licensed Dealer. Experience the perfect combination of sophisticated styling and top-tier premium comfort...",
    "url": "https://www.kijiji.ca/v-cars-trucks/calgary/2025-hyundai-elantra-luxury-two-tone-interior-clearout-pricing/1733974129",
    "adType": "OFFER",
    "status": "ACTIVE",
    "category": { "id": 174, "name": "Cars & Trucks", "path": ["Cars & Vehicles", "Cars & Trucks"] },
    "price": 24000,
    "priceCurrency": "CAD",
    "priceType": "FIXED",
    "priceFormatted": "$24,000",
    "location": {
        "name": "Calgary",
        "address": "710 Crowfoot Cres NW, Calgary, AB, T3G 4S6",
        "latitude": 51.1437286,
        "longitude": -114.1932056
    },
    "images": ["https://media.kijiji.ca/api/v1/ca-prod-dealer-ads/images/64/..."],
    "imageCount": 27,
    "mainImage": "https://media.kijiji.ca/api/v1/ca-prod-dealer-ads/images/64/...",
    "attributes": { "carmake": "Hyundai", "carmodel": "Elantra", "caryear": "2025", "vin": "KMHLN4DG4SU031014" },
    "seller": {
        "id": "COMMERCIAL_2421",
        "name": "Crowfoot Hyundai",
        "type": "COMMERCIAL",
        "phone": "+1825413xxxx",
        "verified": false
    },
    "postedAt": "2026-03-04T12:56:05.000Z",
    "updatedAt": "2026-08-10T14:41:01.000Z",
    "views": 239,
    "scrapedAt": "2026-08-11T12:00:00.000Z"
}
```

### Data fields

| Field                                  | Description                                                                                                  |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `title`, `description`                 | Listing headline and full text description                                                                   |
| `category`                             | Category id, name, and breadcrumb path                                                                       |
| `price`, `priceFormatted`, `priceType` | Numeric price in dollars, a display-formatted string, and the price type (fixed, contact, free, swap...)     |
| `location`                             | City/area name, full address string, and latitude/longitude                                                  |
| `images`, `imageCount`, `mainImage`    | Photo URLs                                                                                                   |
| `attributes`                           | Category-specific details (e.g. vehicle make/model/mileage, bedrooms/bathrooms, job type) as key-value pairs |
| `seller`                               | Seller name, type, phone, website, and verification status                                                   |
| `postedAt`, `updatedAt`                | When the ad was first posted and last bumped                                                                 |
| `views`                                | View count shown on the listing (available when full details are scraped)                                    |
| `url`                                  | Link to the live listing                                                                                     |
| `scrapedAt`                            | Timestamp of when the item was scraped                                                                       |

### How much does it cost to scrape Kijiji.ca?

This Actor charges based on the Apify platform's standard compute-unit pricing for your plan — there's no separate per-item fee. A run scraping a few hundred listings with full details enabled uses a small fraction of a compute unit, well within the free tier for occasional use. Larger, unlimited runs across broad categories cost proportionally more compute time. To control cost:

- ✅ Set a specific **Max items** value instead of leaving it unlimited.
- ✅ Turn off **Scrape full listing details** if you only need what's already shown on search results (title, price, location, images) — this roughly halves the number of requests.
- ✅ Point **Start URLs** at a narrow category or keyword search instead of a broad, unfiltered one.

### Tips for better results

- Want everything in a category (e.g. all of Cars & Trucks, or all Jobs)? Point **Start URLs** at that category's page and set **Max items** to `0` — the Actor pages through the entire category until it runs out of listings, no need to guess a count upfront.
- Narrower **Start URLs** (a specific city, category, or keyword search) return relevant results faster than a broad nationwide category.
- You can mix category/search pages and specific listing URLs in the same **Start URLs** list — search pages get crawled for every matching listing, and listing URLs are scraped directly.
- For ongoing monitoring, schedule this Actor to run daily or hourly and compare new runs against previous ones by listing `id`.
- A **Residential** Apify Proxy group is recommended over Datacenter proxies for large or sustained runs, since Kijiji applies stricter rate limits to datacenter IP ranges.

### FAQ

**Is this legal?** This Actor only accesses data that Kijiji.ca already serves to any visitor's browser. You are responsible for using the scraped data in compliance with Kijiji's own Terms of Service and any applicable laws in your jurisdiction, particularly around reuse of seller contact information.

**Will this get blocked?** The Actor is built to run reliably against Kijiji.ca's public pages, using proxy rotation and realistic browser behavior. If you notice a drop in results, please open an issue — the site's markup can change over time and we monitor for that.

**Can I get a custom version?** Yes — see below. 👇

🐞 Found a bug or missing field? Please report it on the Actor's **Issues** tab so it can be fixed quickly.

### Support & custom development

Need a different data shape, extra filters, a scraper for another marketplace, or a brand new Apify Actor built from scratch? That's exactly what I do — reach out and let's talk:

📧 Email: sajanbista1030@gmail.com
💼 LinkedIn: <https://linkedin.com/in/sajan-bista>

# Actor input Schema

## `startUrls` (type: `array`):

Kijiji.ca category or search pages to crawl (e.g. https://www.kijiji.ca/b-cars-trucks/canada/c174l0), and/or specific listing URLs (e.g. https://www.kijiji.ca/v-cars-trucks/calgary/.../1733974129) to scrape directly.

## `maxItems` (type: `integer`):

Maximum number of listings to scrape across all start URLs. Set to 0 to scrape every listing in the given categories/searches - the Actor pages through all results until none are left.

## `scrapeListingDetails` (type: `boolean`):

Visit each listing's own page for the full description, seller name/phone, view count, status, and human-readable attributes. Turn off for a faster, lighter scrape that only uses the data already shown on search-result pages (no seller name/phone).

## `proxyConfiguration` (type: `object`):

Kijiji rate-limits and blocks datacenter IPs at scale. Apify Proxy is enabled by default; a Residential proxy group is recommended for large or sustained runs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.kijiji.ca/b-cars-trucks/canada/c174l0"
    },
    {
      "url": "https://www.kijiji.ca/b-real-estate/canada/c34l0"
    }
  ],
  "maxItems": 0,
  "scrapeListingDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.kijiji.ca/b-cars-trucks/canada/c174l0"
        },
        {
            "url": "https://www.kijiji.ca/b-real-estate/canada/c34l0"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jordan-byte/kijiji-website-canada-0-77").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [
        { "url": "https://www.kijiji.ca/b-cars-trucks/canada/c174l0" },
        { "url": "https://www.kijiji.ca/b-real-estate/canada/c34l0" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("jordan-byte/kijiji-website-canada-0-77").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.kijiji.ca/b-cars-trucks/canada/c174l0"
    },
    {
      "url": "https://www.kijiji.ca/b-real-estate/canada/c34l0"
    }
  ]
}' |
apify call jordan-byte/kijiji-website-canada-0-77 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jordan-byte/kijiji-website-canada-0-77"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pD3onYAoTfiRIQWaw/builds/DKf0Cz42GJKRxgYWA/openapi.json
