# Kijiji Listing Extractor (`kawsar/kijiji-listing-extractor`) Actor

Kijiji Listing Extractor collects real estate, vehicle, and classified ads from Kijiji.ca. It gathers listing prices, images, location coordinates, and technical specifications for market research, price comparisons, and lead generation.

- **URL**: https://apify.com/kawsar/kijiji-listing-extractor.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Kijiji Listing Extractor: Canadian Classifieds, Vehicles, and Real Estate Scraper

Kijiji Listing Extractor is a web scraping tool designed to collect detailed structured datasets from Kijiji.ca. It converts localized classifieds, vehicle listings, real estate postings, jobs, and community advertisements into structured formats like JSON, CSV, or Excel. You can automate data collection to monitor real-time price changes, track housing trends, analyze localized car markets, and run custom regional analytics.

The extractor features a built-in request delivery layer that bypasses web scrap-prevention systems, IP blocks, and rate limits automatically. No complex proxy setup or external rotation configuration is needed.

### Key Features

- **Automatic Category Pagination**: Traverses multi-page browse and search results automatically to gather listings up to your requested item limit.
- **Deep Attributes Extraction**: Collects exact coordinates, listing metadata, and custom category-specific fields like car make, model, year, transmission, and mileage.
- **Robust Output Schema**: Returns clean data using structured, sanitized keys that avoid reserved keyword issues during downstream integrations.
- **Zero-Configuration Bypass**: Out-of-the-box system that bypasses modern anti-scraping protections reliably.

### What Data Does This Actor Extract?

The crawler extracts deep structured details from search pages, category browse listings, and individual ad detail pages:

- **Listing Information**: Unique IDs, ad titles, item descriptions, and direct listing page URLs.
- **Pricing Details**: Exact price amounts, currency, and price type indicators (fixed, free, contact, swap).
- **Geographic Location**: City names, text addresses, and exact latitude and longitude coordinates.
- **Rich Media**: Image counts and a complete list of high-resolution image URLs.
- **Sanitized Specifications**: Tailored, category-specific metadata. For example, in vehicle categories, it automatically flattens parameters like car make and model, model year, transmission type, fuel type, mileage, drivetrain, and exterior color.
- **Temporal Metadata**: Listing activation dates, sorting dates, ad placement types, and exact scraping timestamps.

### How to Use Kijiji Listing Extractor

1. Find a search, category, or listing detail URL on Kijiji.ca matching your target market. For example: `https://www.kijiji.ca/b-classic-cars/canada/c122l0`
2. Enter the URL into the **Start URLs** input field. You can supply multiple URLs to process them in a single batch.
3. Configure the **Max items** limit to manage your dataset size.
4. Click **Start** and let the extractor process the pages.
5. Download your dataset in your preferred format (JSON, CSV, XML, or Excel).

### Input Parameters

The extractor supports the following input fields:

| Field Name | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| **Start URLs** | array | *(Required)* | A list of Kijiji category, search, or individual ad URLs. Prefilled with Classic Cars Canada. |
| **Max items** | integer | `40` | The maximum number of listings to collect across all source URLs. |
| **Request timeout** | integer | `30` | Timeout in seconds for individual web requests. |

### Output Schema

The extractor pushes structured records directly to your dataset. Here is an example of an extracted classic car listing record:

```json
{
  "listingId": "1738543866",
  "listingTitle": "Chevy C50 Towing",
  "itemDescription": "Chevy C50 Custom 1974. 350 engine, manual transmission, hydraulic winch. 3 passengers, radio, recently serviced.",
  "listingUrl": "https://www.kijiji.ca/v-classic-cars/sherbrooke-qc/chevy-c50-towing/1738543866",
  "categoryId": 122,
  "imageCount": 10,
  "imageUrls": [
    "https://media.kijiji.ca/api/v1/ca-prod-fsbo-ads/images/eb/eb34ebec-c03a-4973-a34c-3f15558e2889?rule=kijijica-200-jpg"
  ],
  "activationDate": "2026-06-02T00:27:35.000Z",
  "sortingDate": "2026-06-05T00:30:46.000Z",
  "adSource": "TOP_AD",
  "locationName": "Sherbrooke",
  "locationAddress": "Lac-Mégantic, QC, G6B 1R1",
  "latitude": 45.58221,
  "longitude": -70.89756,
  "priceAmount": 11500.0,
  "priceType": "FIXED",
  "priceCurrency": "CAD",
  "listingAttributes": {
    "noofseats": "3",
    "carmileageinkms": "78000",
    "carmake": "chevrolet",
    "drivetrain": "rwd",
    "noofdoors": "2",
    "cartransmission": "1",
    "carcolor": "gray",
    "forsaleby": "ownr",
    "carfueltype": "gas",
    "carmodel": "othrmdl",
    "carbodytype": "pickuptruck",
    "caryear": "1974",
    "cartrim": "C50"
  },
  "scrapedAt": "2026-06-07T04:20:00.000Z"
}
````

### Practical Applications

- **Real Estate and Housing Analysis**: Track rental or sales prices in specific Canadian neighborhoods to study inventory changes and pricing fluctuations.
- **Automotive Market Monitoring**: Gather historical data on car makes, models, mileages, and prices to calculate fair purchase values or find undervalued vehicle deals.
- **Competitor Intelligence**: Monitor local private sellers and dealerships to align your commercial pricing models competitively.
- **Localized Lead Generation**: Detect newly posted offers, jobs, or products matching specific keywords as they appear on the market.

### FAQ

##### Does this actor require custom proxies or credentials?

No. The extractor operates with built-in, pre-configured bypassing infrastructure that routes and manages requests. No additional setup is required from you.

##### Can I schedule extractions automatically?

Yes. You can use Apify's scheduling panel to trigger this extractor on a recurring basis (e.g. hourly, daily, or weekly) to get fresh updates automatically.

##### How do I limit my data consumption?

You can control consumption by lowering the **Max items** field in the input tab. The default limit is set to 40 items to ensure fast and cost-effective test runs.

# Actor input Schema

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

List of Kijiji category, search, or listing detail URLs to extract listings from.

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

Maximum number of listing items to extract in total.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.kijiji.ca/b-classic-cars/canada/c122l0"
    }
  ],
  "maxItems": 40,
  "requestTimeoutSecs": 30
}
```

# 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-classic-cars/canada/c122l0"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/kijiji-listing-extractor").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-classic-cars/canada/c122l0" }] }

# Run the Actor and wait for it to finish
run = client.actor("kawsar/kijiji-listing-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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-classic-cars/canada/c122l0"
    }
  ]
}' |
apify call kawsar/kijiji-listing-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kawsar/kijiji-listing-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kijiji Listing Extractor",
        "description": "Kijiji Listing Extractor collects real estate, vehicle, and classified ads from Kijiji.ca. It gathers listing prices, images, location coordinates, and technical specifications for market research, price comparisons, and lead generation.",
        "version": "0.0",
        "x-build-id": "7KuKnYg0ROQNpjmA6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kawsar~kijiji-listing-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kawsar-kijiji-listing-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/kawsar~kijiji-listing-extractor/runs": {
            "post": {
                "operationId": "runs-sync-kawsar-kijiji-listing-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/kawsar~kijiji-listing-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-kawsar-kijiji-listing-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "List of Kijiji category, search, or listing detail URLs to extract listings from.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of listing items to extract in total.",
                        "default": 40
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Per-request timeout in seconds.",
                        "default": 30
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
