# Kijiji Dealer & Business Leads: Phones, Websites, Addresses (`fayoussef/kijiji-business-leads`) Actor

Turn any Kijiji.ca search into a B2B lead list: one row per dealer, property manager or local business, with phone, website, address, active ad count and sample listings. Businesses only, private sellers skipped.

- **URL**: https://apify.com/fayoussef/kijiji-business-leads.md
- **Developed by:** [Youssef Farhan](https://apify.com/fayoussef) (community)
- **Categories:** Lead generation, Automation, Real estate
- **Stats:** 6 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.88 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Kijiji Dealer & Business Leads: Phones, Websites and Addresses from Kijiji.ca

**Turn any Kijiji.ca search into a B2B lead list.** Paste a Kijiji search (Cars & Trucks in Calgary, Apartments in Toronto, Services in Montreal) and get **one row per business** that advertises there: car dealers, property managers, movers, contractors, cleaners and every other local business. Each lead has the **business name, phone number, website, street address, how many ads it runs on Kijiji** and sample listings.

**Businesses only.** Private sellers are skipped and never returned, so you get a clean prospect list instead of thousands of individual ads.

> Need every listing instead of one row per seller? Use [Kijiji Scraper](https://apify.com/fayoussef/kijiji-scraper?fpr=youssef), which returns each ad with price, specs, VIN and photos.

### What you get for each business

| Field | What it holds |
|---|---|
| `business_name` | The name on the business's Kijiji account |
| `phone` | The phone number the business shows on Kijiji |
| `website` | The business website (tracking tags removed) |
| `address` | Street address or area from the business profile |
| `cities` | Cities its ads are posted in |
| `seller_type` | `Dealer` for car dealers, `Business` for every other business account |
| `verified` | Whether Kijiji shows the business as verified |
| `total_listings_on_kijiji` | All active ads the business runs on Kijiji right now |
| `listings_in_search` | Ads it has in the searches you gave |
| `top_ads_in_search` | How many of those are paid Top Ads, a sign the business spends on advertising |
| `categories` | Kijiji categories it was found in |
| `price_min`, `price_max`, `price_median` | Price range of its ads, in Canadian dollars |
| `newest_listing_date` | When it last posted, so you can skip inactive businesses |
| `member_since` | When the account was created, when Kijiji shows it |
| `latitude`, `longitude` | Location of its first ad, for mapping territories |
| `sample_listings` | Up to 5 of its ads (title, link, price) to personalise your pitch |
| `seller_id`, `source_search_urls`, `scraped_at` | Kijiji account ID, the searches it came from, and when |

### Who uses it

- **Selling to car dealers**: financing, warranties, detailing, photography, lot software and dealer CRMs. Search Cars & Trucks in your territory and get every dealer, its phone and its inventory size.
- **Real estate and property services**: reach property managers and apartment buildings listing rentals, with the building address and phone.
- **Local B2B sales and agencies**: marketing agencies, web designers and suppliers prospecting movers, contractors, renovators and cleaners in Kijiji Services.
- **Market mapping**: see which businesses dominate a category in a city, how many ads each runs and who pays for Top Ads.

### How to use it

1. Open [kijiji.ca](https://www.kijiji.ca), choose a category and a city, and apply any filters you want.
2. Copy the address bar and paste it into **Kijiji search URLs**. Add as many searches as you like; they take turns, so one big category cannot crowd out the others.
3. Set **Maximum leads**, then press **Start**. Download the leads as Excel, CSV or JSON, or send them to your CRM through the Apify API or an integration.

### Input

| Field | Default | What it does |
|---|---|---|
| `start_urls` | required | Kijiji search URLs, one per category and city |
| `max_leads` | 50 | Stop after this many business leads |
| `max_pages` | 5 | Result pages read per search (about 40 ads per page). More pages find more, smaller businesses |
| `min_listings` | 1 | Only keep businesses with at least this many active ads on Kijiji |
| `include_phone` | true | Reveal phone numbers. Turn off for a faster run without phones |
| `require_phone` | false | Skip businesses that hide their phone, so every lead is callable |
| `proxy_configuration` | empty | Optional custom proxy URL. Leave empty and the Actor picks one |

```json
{
  "start_urls": [
    { "url": "https://www.kijiji.ca/b-cars-trucks/calgary/c174l1700199" },
    { "url": "https://www.kijiji.ca/b-services/city-of-toronto/c72l1700273" }
  ],
  "max_leads": 100,
  "min_listings": 5,
  "require_phone": true
}
```

### Output example

```json
{
  "business_name": "Automaxx Calgary",
  "phone": "+1-833-500-4441",
  "website": "https://www.automaxx.com/",
  "address": "715 41 Avenue NE",
  "cities": ["Calgary"],
  "seller_type": "Dealer",
  "verified": false,
  "total_listings_on_kijiji": 174,
  "listings_in_search": 38,
  "top_ads_in_search": 0,
  "categories": ["Cars & Trucks"],
  "price_min": 12980.0,
  "price_max": 87980.0,
  "price_median": 35980.0,
  "newest_listing_date": "2026-10-16T13:15:09.000Z",
  "member_since": null,
  "latitude": 51.0901338,
  "longitude": -114.0469419,
  "sample_listings": [
    {
      "title": "2025 Ford Bronco Sport Big Bend",
      "url": "https://kijiji.ca/v-cars-trucks/calgary/2025-ford-bronco-sport-big-bend/1740842451",
      "price": 35980.0
    }
  ],
  "seller_id": "COMMERCIAL_2123",
  "source_search_urls": ["https://www.kijiji.ca/b-cars-trucks/calgary/c174l1700199"],
  "scraped_at": "2026-10-16T14:16:15+00:00"
}
```

### Pricing

You pay per lead: one business row in the dataset is one result. Searches, pages read and private sellers skipped along the way cost nothing extra. The current rate is shown on this Actor's Store page.

The free plan returns up to 10 leads per run, phones included, so you can check the data before you buy. An [Apify plan](https://apify.com/pricing?fpr=youssef) removes the cap.

### FAQ

**Does it return private sellers?**
No. Only Kijiji business accounts (and car ads Kijiji marks as dealer ads) become leads. Private individuals are skipped and nothing about them is saved.

**Why do many car dealer phones start with 833?**
Kijiji gives many dealers a call-forwarding number. It rings straight through to the dealership, so it works for calls, but it is not the dealer's main line. The `website` field gets you the dealer's own contact page.

**Some leads have no phone. Why?**
The business chose not to show a number on Kijiji. Turn on **Only businesses with a phone** to skip them.

**How many leads can one search give?**
It depends on the category and city. Car searches in big cities are dealer-heavy and give many leads per page; categories like Services mix businesses with private posters. Raise **Search pages to read** to dig deeper.

**Can I run it on a schedule or from an AI agent?**
Yes. Schedule it in Apify to refresh your lead list weekly, call it through the Apify API, or let an AI agent call it through the Apify MCP server.

**Is this data legal to collect?**
It returns business contact details that the businesses publish on Kijiji for buyers to see. You are responsible for how you contact them: follow Canada's anti-spam law (CASL) and any do-not-call rules that apply to you.

### Support

Found a bug or a field that looks wrong? Open an issue on the [Issues tab](https://apify.com/fayoussef/kijiji-business-leads/issues/open) and it gets fixed.

💼 Need a custom version or another site? [Contact me through my Apify profile](https://apify.com/fayoussef)

More Canadian data: [Kijiji Scraper](https://apify.com/fayoussef/kijiji-scraper?fpr=youssef) (every listing), [Canada411](https://apify.com/fayoussef/canada411-ca?fpr=youssef) (business and people directory), [Canada Car Scraper](https://apify.com/fayoussef/canada-car-scraper?fpr=youssef) (AutoTrader.ca, Kijiji and CarGurus in one dataset).

# Actor input Schema

## `start_urls` (type: `array`):

Open kijiji.ca, pick a category and a city (for example Cars & Trucks in Calgary, Apartments in Toronto or Services in Montreal), apply any filters, then copy the address bar here. One URL per search. Every business that posts in that search becomes one lead.

## `max_leads` (type: `integer`):

Stop after this many business leads. Each lead is one business with its phone, website and address. Private sellers are never counted or returned.

## `max_pages` (type: `integer`):

How many result pages to read per search URL (about 40 ads per page). More pages find more businesses, including smaller ones that post less often.

## `min_listings` (type: `integer`):

Only keep businesses with at least this many active ads on Kijiji. Raise it (for example to 20) to target bigger dealers and property managers.

## `include_phone` (type: `boolean`):

Reveal each business's phone number. Turn off for a faster run that returns name, website and address only.

## `require_phone` (type: `boolean`):

Skip businesses that hide their phone number on Kijiji, so every lead you get is callable.

## `proxy_configuration` (type: `string`):

Optional: your own proxy URL (http://user:pass@host:port). Leave empty and the Actor picks a proxy for you.

## Actor input object example

```json
{
  "start_urls": [
    {
      "url": "https://www.kijiji.ca/b-cars-trucks/calgary/c174l1700199"
    }
  ],
  "max_leads": 20,
  "max_pages": 5,
  "min_listings": 1,
  "include_phone": true,
  "require_phone": false
}
```

# Actor output Schema

## `results` (type: `string`):

One row per Kijiji business seller

# 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 = {
    "start_urls": [
        {
            "url": "https://www.kijiji.ca/b-cars-trucks/calgary/c174l1700199"
        }
    ],
    "max_leads": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("fayoussef/kijiji-business-leads").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 = {
    "start_urls": [{ "url": "https://www.kijiji.ca/b-cars-trucks/calgary/c174l1700199" }],
    "max_leads": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("fayoussef/kijiji-business-leads").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 '{
  "start_urls": [
    {
      "url": "https://www.kijiji.ca/b-cars-trucks/calgary/c174l1700199"
    }
  ],
  "max_leads": 20
}' |
apify call fayoussef/kijiji-business-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fayoussef/kijiji-business-leads"
        }
    }
}
```

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/o9cu8Scq1aswyzGKQ/builds/2ev9dqufpTd0YEGdu/openapi.json
