POST /api/kijiji/listings/search
Price: 5 credits
Search Kijiji classifieds across Canada: for each result returns title, description, price, location, images, posting dates and the category-specific attributes. Supports keyword and category browsing plus filters for price, seller kind, vehicles (make, model, year, mileage, body type, fuel, drivetrain, colour, features), real estate (bedrooms, bathrooms, unit type, amenities, pet and smoking policy) and jobs (employment type).
Search live Kijiji (Canada) classifieds. keyword is optional: leave it empty and set category_id to browse a whole category. category_id and location_id come from the kijiji/categories and kijiji/locations endpoints (0 means everything / all of Canada). Returns listing cards with title, description, price (CAD dollars), original_price/msrp/price_rating, created_at/updated_at (unix seconds), images, location and attributes. Vehicle filters (make/model take lowercase codes such as honda and civic), real estate filters and job filters only apply inside their own categories.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)keyword string — Search keyword; leave empty to browse a category (default: "")count integer required — Max number of listings to return (min: 1)category_id integer — Category ID to search in (0 searches every category) (default: 0; min: 0)location_id integer — Location ID to search in (0 searches all of Canada) (default: 0; min: 0)sort string — Result ordering (default: "date"; one of: "date", "price", "distance", "mileage", "relevance")order string — Sort direction (default: "desc"; one of: "asc", "desc")ad_type string nullable — Offers for sale or wanted ads (one of: "offer", "wanted")price_type string nullable — Special price type (one of: "free", "contact", "swap_trade")min_price number nullable — Minimum price in CAD (min: 0)max_price number nullable — Maximum price in CAD (min: 0)for_sale_by string nullable — Seller kind for goods and vehicles (one of: "owner", "dealer")verified_only boolean — Only listings from verified users (default: false)with_images boolean — Only listings that have images (default: false)with_video boolean — Only listings that have a video (default: false)price_drop_only boolean — Only listings with a reduced price (default: false)make array nullable — Vehicle makes, lowercase codes such as honda or bmw (examples: ["honda","toyota"])model array nullable — Vehicle models, lowercase codes such as civic (examples: ["civic"])min_year integer nullable — Earliest vehicle model year (min: 1900; max: 2099)max_year integer nullable — Latest vehicle model year (min: 1900; max: 2099)min_mileage integer nullable — Minimum vehicle mileage in kilometres (min: 0)max_mileage integer nullable — Maximum vehicle mileage in kilometres (min: 0)body_type array nullable — Vehicle body types (one of: "convertible", "coupe", "hatchback", "pickup_truck", "sedan", "suv_crossover", "van_minivan", "wagon", "other")vehicle_condition array nullable — Vehicle conditions (one of: "new", "used", "lease", "damaged", "salvage")transmission array nullable — Vehicle transmissions (one of: "manual", "automatic", "semi_automatic", "other")fuel_type array nullable — Vehicle fuel types (one of: "diesel", "electric", "gas", "hybrid", "other")drivetrain array nullable — Vehicle drivetrains (one of: "four_by_four", "awd", "fwd", "rwd", "other")colour array nullable — Vehicle exterior colours (one of: "black", "blue", "brown", "burgundy", "gold", "gray", "green", "orange", "pink", "purple", "red", "silver", "tan", "teal", "white", "yellow", "beige", "off_white", "other")seats array nullable — Vehicle seat countsdoors array nullable — Vehicle door countsvehicle_features array nullable — Required vehicle features (one of: "air_conditioning", "alloy_wheels", "bluetooth", "cruise_control", "navigation", "parking_assist", "push_button_start", "sunroof", "trailer_hitch")dealer_options array nullable — Required dealer services (one of: "by_appointment_only", "home_delivery", "online_financing", "online_purchasing", "payment_deferrals", "return_policy", "service_drop_off", "service_open", "showroom_open", "video_chat", "virtual_appraisal")bedrooms array nullable — Bedroom counts; 0 is bachelor/studio and .5 means plus den (examples: [1,1.5,2])bathrooms array nullable — Bathroom counts (examples: [1,1.5,2])unit_type array nullable — Property unit types (one of: "apartment", "condo", "basement_apartment", "house", "townhouse", "duplex_triplex")for_rent_by string nullable — Who is renting the property out (one of: "owner", "professional")furnished boolean nullable — Whether the rental is furnishedair_conditioning boolean nullable — Whether the rental has air conditioningparking_spots array nullable — Number of parking spotsagreement_type string nullable — Rental agreement type (one of: "month_to_month", "one_year")smoking_permitted string nullable — Smoking policy (one of: "yes", "no", "outdoors_only")pets_allowed string nullable — Pet policy (one of: "yes", "no", "limited")min_area integer nullable — Minimum floor area in square feet (min: 0)max_area integer nullable — Maximum floor area in square feet (min: 0)rental_virtual_options array nullable — Remote viewing and application options (one of: "online_application", "video_chat", "virtual_tour")rent_deferral boolean — Only rentals that offer rent deferral (default: false)date_available string nullable — Only rentals available on this date, as YYYY-MM-DD (examples: "2026-08-01")rental_amenities array nullable — Required rental amenities and utilities (one of: "yard", "balcony", "hydro", "heat", "water", "cable_tv", "internet", "laundry_in_unit", "laundry_in_building", "dishwasher", "fridge_freezer", "elevator", "gym", "pool", "concierge", "security_24h", "bicycle_parking", "storage_locker", "barrier_free_entrance", "visual_aids", "accessible_washroom", "wheelchair_accessible", "braille_labels", "audio_prompts")job_type array nullable — Employment types (one of: "full_time", "part_time", "contract", "temporary", "contact")job_offered_by string nullable — Who posted the job (one of: "individual", "professional")locale string — Language of localized labels (default: "en"; one of: "en", "fr")@type string (default: "KijijiListingCard")id string requiredurl string nullablelisting_type string nullabledescription string nullablecategory_id integer nullableprice number nullablecurrency string nullableoriginal_price number nullablemsrp number nullableprice_type string nullableprice_rating string nullableaverage_market_price number nullablesurcharges string nullablecreated_at integer nullableupdated_at integer nullableimage string nullableimages array (default: [])image_count integer nullableis_top_ad boolean nullableis_price_drop boolean nullableis_showcase boolean nullableis_highlighted boolean nullableis_shipped_by_seller boolean nullablehas_virtual_tour boolean nullablehas_category_badge boolean nullablead_source string nullableseller_id string nullableis_seller_verified boolean nullablelocation object nullable@type string (default: "KijijiListingLocation")id integer nullablename string nullableaddress string nullablelatitude number nullablelongitude number nullabledistance number nullablenearest_intersection string nullableneighbourhood string nullableneighbourhood_id string nullableattributes array (default: [])@type string (default: "KijijiListingAttribute")canonical_name string requiredname string nullablevalues array (default: [])canonical_values array (default: [])422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.