{
  "openapi": "3.0.1",
  "info": {
    "title": "Kijiji Scraper — Listings, Cars, Rentals & New-Listing Alerts",
    "description": "Scrape Kijiji.ca classifieds from any search URL or by keyword, city and category. Prices, photos, locations, attributes, car details (year, make, model, km, VIN) and rental details (beds, baths, utilities). Monitor mode returns only new listings and price drops.",
    "version": "0.1",
    "x-build-id": "07VlRZwr3ks6OuOnW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yugenox~kijiji-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yugenox-kijiji-scraper",
        "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/yugenox~kijiji-scraper/runs": {
      "post": {
        "operationId": "runs-sync-yugenox-kijiji-scraper",
        "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/yugenox~kijiji-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-yugenox-kijiji-scraper",
        "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",
        "properties": {
          "startUrls": {
            "title": "🔗 Kijiji URLs",
            "type": "array",
            "description": "Paste any Kijiji search URL — with its keyword, category, location, filters and sort exactly as you set them on kijiji.ca (e.g. https://www.kijiji.ca/b-cars-trucks/calgary/c174l1700199?price=5000__15000). Listing URLs (https://www.kijiji.ca/v-…/1739736810) return that one listing with full details.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "🔍 Keywords",
            "type": "array",
            "description": "Or search by keyword. Each keyword runs its own search, using the location, category and filters below.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "📍 Location",
            "type": "string",
            "description": "City, region or province for keyword searches: \"Toronto\", \"GTA\", \"Montreal\", \"Greater Vancouver Area\", \"Calgary\", \"ON\", \"BC\"… or a Kijiji location id. Empty = all of Canada."
          },
          "category": {
            "title": "🗂️ Category",
            "type": "string",
            "description": "Kijiji category for keyword searches: \"Cars & Trucks\", \"Long Term Rentals\", \"Furniture\", \"Bikes\", \"Electronics\"… or a Kijiji category id. Empty = all categories. Setting only a location and/or category (no keywords) browses that whole category."
          },
          "sort": {
            "title": "↕️ Sort (keyword searches)",
            "enum": [
              "dateDesc",
              "dateAsc",
              "priceAsc",
              "priceDesc",
              "relevance",
              "mileageAsc",
              "mileageDesc"
            ],
            "type": "string",
            "description": "Order of results for keyword searches. URLs keep their own sort.",
            "default": "dateDesc"
          },
          "minPrice": {
            "title": "💲 Min price (CAD)",
            "minimum": 0,
            "type": "integer",
            "description": "Keyword searches only."
          },
          "maxPrice": {
            "title": "💲 Max price (CAD)",
            "minimum": 0,
            "type": "integer",
            "description": "Keyword searches only."
          },
          "adType": {
            "title": "📢 Ad type",
            "enum": [
              "OFFER",
              "WANTED"
            ],
            "type": "string",
            "description": "Offering (for sale / for rent) or Wanted ads. Keyword searches only.",
            "default": "OFFER"
          },
          "latitude": {
            "title": "🧭 Latitude (radius search)",
            "type": "string",
            "description": "Search around a point instead of a named location, e.g. 43.6532. Use with Longitude and Radius."
          },
          "longitude": {
            "title": "🧭 Longitude",
            "type": "string",
            "description": "e.g. -79.3832"
          },
          "radiusKm": {
            "title": "📏 Radius (km)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Distance around the point, in km."
          },
          "maxItems": {
            "title": "🔢 Max listings (total)",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of listings saved across the whole run. Leave empty for no total limit."
          },
          "maxItemsPerQuery": {
            "title": "🔢 Max listings per search",
            "minimum": 1,
            "type": "integer",
            "description": "Cap for each URL / keyword. Kijiji itself shows at most 4,040 listings for one search; above that the scraper automatically splits the search into sub-categories, sub-regions and price ranges to go further. In monitor mode this is how deep each search is checked.",
            "default": 100
          },
          "postedWithinHours": {
            "title": "🕒 Only listings posted in the last N hours",
            "minimum": 1,
            "type": "integer",
            "description": "Skip older listings. With \"Newest first\" order the scan stops as soon as it reaches older listings, so this is also fast and cheap."
          },
          "includeDetails": {
            "title": "📄 Full listing details",
            "type": "boolean",
            "description": "Open every listing for its full description, all photos, view count, status, end date and labelled attributes (search results carry a short description and the first photo).",
            "default": false
          },
          "skipTopAds": {
            "title": "🚫 Skip promoted top ads",
            "type": "boolean",
            "description": "Leave out the paid \"Top Ad\" listings Kijiji pins above the results (they are often older and repeat on every page). Organic results only.",
            "default": false
          },
          "monitorMode": {
            "title": "🔔 Monitor mode",
            "enum": [
              "off",
              "new",
              "newAndPriceDrops"
            ],
            "type": "string",
            "description": "For scheduled runs: remember what earlier runs saw and save only what changed. \"New listings\" returns listings posted since the previous run; \"New + price drops\" also returns listings whose price went down (with previousPrice). The first run saves everything as the baseline. Unchanged listings are skipped and not charged.",
            "default": "off"
          },
          "monitorStateKey": {
            "title": "🗝️ Monitor name",
            "type": "string",
            "description": "Name for this monitor's memory, e.g. \"calgary-trucks\". Use a different name for each separate alert. Empty = derived from the searches."
          },
          "monitorIncludeResurfaced": {
            "title": "♻️ Also return resurfaced listings",
            "type": "boolean",
            "description": "Also return listings not seen before but posted before the previous run (bumped back to the top, or older ads appearing for the first time). They carry monitorEvent \"resurfaced\".",
            "default": false
          },
          "maxConcurrency": {
            "title": "⚡ Parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many pages are fetched at the same time.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy",
            "type": "object",
            "description": "Apify Proxy is required. Datacenter proxy is used first (cheapest) and blocked IPs automatically fall back to Canadian residential proxies.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}