{
  "openapi": "3.0.1",
  "info": {
    "title": "Kijiji Scraper + Real Time Notifications",
    "description": "Extract Buy & Sell listings from Kijiji Canada. Search multiple keywords with Simple or Advanced mode, filter by price and seller type. Get titles, prices, locations, images, seller info, and more. Skip seen listings, Discord alerts, API access, and scheduled runs. ~$0.008 per run.",
    "version": "0.0",
    "x-build-id": "OMEF5JBqp3r4tsbOu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/raidr-api~kijiji-scraper-real-time-notifications/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-raidr-api-kijiji-scraper-real-time-notifications",
        "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/raidr-api~kijiji-scraper-real-time-notifications/runs": {
      "post": {
        "operationId": "runs-sync-raidr-api-kijiji-scraper-real-time-notifications",
        "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/raidr-api~kijiji-scraper-real-time-notifications/run-sync": {
      "post": {
        "operationId": "run-sync-raidr-api-kijiji-scraper-real-time-notifications",
        "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": [
          "location"
        ],
        "properties": {
          "searchMode": {
            "title": "🔀 Search Mode",
            "enum": [
              "simple",
              "advanced"
            ],
            "type": "string",
            "description": "Simple: One set of filters applied to all search terms.\nAdvanced: Each search term gets its own price range, seller type, sort order, and page limit.",
            "default": "simple"
          },
          "searchTerms": {
            "title": "🔤 Search Terms",
            "type": "array",
            "description": "Keywords to search for on Kijiji. Each term is searched separately.\n\nExamples: 'iPhone 15', 'mountain bike', 'Nintendo Switch'. Leave empty to browse all Buy & Sell listings.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "📍 Location",
            "type": "string",
            "description": "Where to search on Kijiji. Enter a city name, full address, or postal code. Used by both Simple and Advanced modes.\n\nExamples: 'Toronto, ON', 'Edmonton, AB', 'V6B 1A1'",
            "default": "Toronto, ON"
          },
          "radius": {
            "title": "📏 Search Radius",
            "enum": [
              "5",
              "10",
              "25",
              "50",
              "100",
              "150",
              "200",
              "300",
              "500"
            ],
            "type": "string",
            "description": "How far from your location to search. Used by both Simple and Advanced modes.",
            "default": "150"
          },
          "sortBy": {
            "title": "📊 Sort By",
            "enum": [
              "DATE_DESC",
              "DATE_ASC",
              "PRICE_ASC",
              "PRICE_DESC",
              "DISTANCE_ASC"
            ],
            "type": "string",
            "description": "How to sort the results. Applies to all search terms in Simple mode.",
            "default": "DATE_DESC"
          },
          "forSaleBy": {
            "title": "🏷️ For Sale By",
            "type": "array",
            "description": "Filter by seller type. Applies to all search terms in Simple mode. Leave empty for all seller types.",
            "items": {
              "type": "string",
              "enum": [
                "ownr",
                "delr"
              ],
              "enumTitles": [
                "Owner",
                "Dealer"
              ]
            }
          },
          "minPrice": {
            "title": "💲 Min Price ($)",
            "type": "integer",
            "description": "Minimum price in dollars. Applies to all search terms in Simple mode. Leave at 0 for no minimum.",
            "default": 0
          },
          "maxPrice": {
            "title": "💲 Max Price ($)",
            "type": "integer",
            "description": "Maximum price in dollars. Applies to all search terms in Simple mode. Leave at 0 for no maximum.",
            "default": 0
          },
          "searches": {
            "title": "🚀 Advanced Searches",
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "description": "Add one or more searches. Each search has its own search term and individual filters.\n\nExample: Track 'iPhone 15' at $600–$800 from owners AND 'PS5' at $300–$500 from any seller.",
            "items": {
              "type": "object",
              "properties": {
                "searchTerm": {
                  "title": "Search Term",
                  "type": "string",
                  "description": "What to search for (e.g. 'iPhone 15', 'mountain bike')",
                  "editor": "textfield",
                  "minLength": 1
                },
                "minPrice": {
                  "title": "Min Price ($)",
                  "type": "integer",
                  "description": "Minimum price in dollars for this search. 0 or empty = no minimum.",
                  "editor": "number",
                  "minimum": 0
                },
                "maxPrice": {
                  "title": "Max Price ($)",
                  "type": "integer",
                  "description": "Maximum price in dollars for this search. 0 or empty = no maximum.",
                  "editor": "number",
                  "minimum": 0
                },
                "forSaleBy": {
                  "title": "For Sale By",
                  "type": "string",
                  "description": "Filter by seller type for this search. Leave empty for all seller types.",
                  "editor": "select",
                  "enum": [
                    "",
                    "ownr",
                    "delr"
                  ],
                  "enumTitles": [
                    "Any",
                    "Owner",
                    "Dealer"
                  ]
                },
                "sortBy": {
                  "title": "Sort By",
                  "type": "string",
                  "description": "How to sort results for this search. Leave empty to use the default (Most recent).",
                  "editor": "select",
                  "enum": [
                    "",
                    "DATE_DESC",
                    "DATE_ASC",
                    "PRICE_ASC",
                    "PRICE_DESC",
                    "DISTANCE_ASC"
                  ],
                  "enumTitles": [
                    "Default (Most recent)",
                    "Most recent",
                    "Least recent",
                    "Lowest price",
                    "Highest price",
                    "Distance"
                  ]
                },
                "maxPages": {
                  "title": "Max Pages",
                  "type": "integer",
                  "description": "Max pages for this search (40 listings/page). 0 or empty = use global setting.",
                  "editor": "number",
                  "minimum": 0
                }
              },
              "required": [
                "searchTerm"
              ]
            }
          },
          "maxPages": {
            "title": "📄 Max Pages",
            "type": "integer",
            "description": "Maximum number of pages to fetch per search (40 listings per page). Set to 0 for all available pages. Can be overridden per search in Advanced mode.",
            "default": 5
          },
          "skipPreviouslySeen": {
            "title": "🔄 Skip Previously Seen Listings",
            "type": "boolean",
            "description": "Remember listing IDs from previous runs and only output new listings. Useful for scheduled runs that monitor for new items over time.",
            "default": false
          },
          "enableDiscord": {
            "title": "💬 Enable Discord Notifications",
            "type": "boolean",
            "description": "Turn on Discord notifications. You must also provide a webhook URL below for notifications to be sent.",
            "default": false
          },
          "discordWebhookUrl": {
            "title": "🔗 Webhook URL",
            "type": "string",
            "description": "Discord webhook URL for notifications. Leave empty to disable.",
            "default": ""
          },
          "discordImageDisplay": {
            "title": "🖼️ Image Style",
            "enum": [
              "thumbnail",
              "full",
              "none"
            ],
            "type": "string",
            "description": "How listing images appear in Discord.",
            "default": "thumbnail"
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Proxy settings. Not required by default — enable if Kijiji starts blocking requests.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}