{"description":"Searches Kijiji, Canada's largest classifieds site, like its search page: title, price in CAD (or free / please contact / swap), area, when it was posted, short description, a photo and the link, for a query in all of Canada, a province or a big metro area, with a price range and sort. Top ads (paid) are dropped by default.","effect":"read","id":"kijiji.ca/search-listings","keywords":["kijiji","classifieds","for sale","used","second hand","buy","sell","free stuff","bike","furniture","canada","toronto","montreal","vancouver","calgary","petites annonces","à vendre","marketplace"],"output":{"schema":{"properties":{"listings":{"items":{"properties":{"description":{"type":["string","null"]},"id":{"type":"string"},"image":{"type":["string","null"]},"listed":{"description":"The date Kijiji sorts by (moves up when the ad is reposted), ISO 8601 UTC","type":["string","null"]},"location":{"description":"Area as Kijiji shows it, e.g. 'City of Toronto'","type":["string","null"]},"posted":{"description":"ISO 8601, UTC","type":["string","null"]},"price_cad":{"type":["number","null"]},"price_drop":{"type":"boolean"},"price_type":{"description":"FIXED, FREE, CONTACT (please contact), SWAP_TRADE, …","type":["string","null"]},"title":{"type":"string"},"top_ad":{"description":"Paid Top Ad","type":"boolean"},"url":{"type":"string"},"verified_seller":{"type":"boolean"}},"type":"object"},"type":"array"},"location":{"type":"string"},"page":{"type":"integer"},"query":{"type":"string"},"total":{"type":["integer","null"]}},"required":["query","listings"],"type":"object"},"value":"let $top = params.include_top_ads == `true`, $s = steps.search[0] in {query: params.query, location: params.location || 'canada', total: $s.total || `0`, page: params.page || `1`, listings: map(&(let $l = @ in {id: $l.id, title: $l.title, description: $l.description, price_cad: $l.amount != `null` && $l.amount / `100` || `null`, price_type: $l.price_type, location: $l.location, posted: $l.posted, listed: $l.listed, price_drop: $l.price_drop, verified_seller: $l.verified, top_ad: $l.top_ad, image: $l.image, url: $l.url}), $s.listings || `[]`)[?$top || !top_ad]}"},"params":{"additionalProperties":false,"properties":{"include_top_ads":{"default":false,"description":"Keep Top Ads (paid placements), marked","type":"boolean"},"location":{"default":"canada","description":"All of Canada, a province, or a metro area (toronto = Greater Toronto Area, ottawa = Ottawa / Gatineau, london-on = London, Ontario)","enum":["canada","ontario","quebec","british-columbia","alberta","manitoba","saskatchewan","nova-scotia","new-brunswick","newfoundland","prince-edward-island","toronto","montreal","vancouver","calgary","edmonton","ottawa","quebec-city","hamilton","victoria","kitchener","london-on"],"type":"string"},"max_price":{"description":"CAD","minimum":0,"type":"integer"},"min_price":{"description":"CAD","minimum":0,"type":"integer"},"page":{"default":1,"description":"40 listings per page","maximum":20,"minimum":1,"type":"integer"},"query":{"description":"What to look for, e.g. 'road bike', 'standing desk', 'iphone 13'","maxLength":80,"minLength":2,"type":"string"},"sort":{"default":"relevance","enum":["relevance","newest","oldest","price_low","price_high"],"type":"string"}},"required":["query"],"type":"object"},"provenance":{"method":"browser-inspect","notes":"kijiji.ca search pages are server-rendered (Next.js) with an Apollo cache in __NEXT_DATA__ props.pageProps.__APOLLO_STATE__: ROOT_QUERY['searchResultsPageByUrl:<path>'] holds pagination.totalCount and refs to topListings (paid, adSource TOP_AD) and mainListings (40, ORGANIC); the StandardListing entities appear in the cache in display order (top ads first). Prices are in cents with a type (FIXED, FREE, CONTACT, SWAP_TRADE). Location ids come from the page's own location filter tree (provinces 9001–9011, metro areas such as Toronto (GTA) 1700272, Greater Montréal 80002, Greater Vancouver 80003); the slug before k0l<id> is not checked (no redirect). price=<min>__<max>, sort=dateDesc/dateAsc/priceAsc/priceDesc and /page-N/ as the site's links use them. Posters' street addresses and coordinates are left out. robots.txt has no rules for Claude-User or anthropic agents and allows /b- search pages. Answers servers.","recorded_at":"2026-11-07T22:28:00+01:00","recorded_by":"C4"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"CA","id":"kijiji.ca","language":"en","name":"Kijiji","origin":"https://www.kijiji.ca","origins":["https://www.kijiji.ca"]},"steps":[{"description":"The server-rendered search page /b-canada/<keywords>/[page-N/]k0l<location id> (Next.js with an Apollo cache in __NEXT_DATA__). The location id decides the area; the slug before it is not checked. The one-item foreach maps the location, price range (price=min__max) and sort.","expect":{"content_type":"html","status":[200]},"extract":{"embedded_json":{"selector":"script#__NEXT_DATA__","vars":{"listings":"values(props.pageProps.__APOLLO_STATE__)[?__typename && ends_with(__typename, 'Listing')].{id: id, title: title, description: description || `null`, amount: price.amount, price_type: price.type || `null`, location: location.name || `null`, posted: activationDate || `null`, listed: sortingDate || activationDate || `null`, image: imageUrls[0] || `null`, url: url, top_ad: adSource != 'ORGANIC' || flags.topAd == `true`, price_drop: flags.priceDrop == `true`, verified: posterInfo.verified == `true`}","total":"values(props.pageProps.__APOLLO_STATE__.ROOT_QUERY)[?pagination] | [0].pagination.totalCount"}}},"foreach":{"as":"f","in":"[{kw: replace(lower(trim(params.query)), ' ', '-'), loc: (let $l = params.location || 'canada' in items(`{\"canada\":\"0\",\"ontario\":\"9004\",\"quebec\":\"9001\",\"british-columbia\":\"9007\",\"alberta\":\"9003\",\"manitoba\":\"9006\",\"saskatchewan\":\"9009\",\"nova-scotia\":\"9002\",\"new-brunswick\":\"9005\",\"newfoundland\":\"9008\",\"prince-edward-island\":\"9011\",\"toronto\":\"1700272\",\"montreal\":\"80002\",\"vancouver\":\"80003\",\"calgary\":\"1700199\",\"edmonton\":\"1700202\",\"ottawa\":\"1700184\",\"quebec-city\":\"1700124\",\"hamilton\":\"80014\",\"victoria\":\"1700173\",\"kitchener\":\"1700209\",\"london-on\":\"1700214\"}`)[?[0] == $l] | [0][1]), pg: (params.page || `1`) > `1` && join('', ['page-', to_string(params.page), '/']) || '', price: (params.min_price || params.max_price) && join('__', [params.min_price && to_string(params.min_price) || '', params.max_price && to_string(params.max_price) || '']) || `null`, sort: (params.sort == 'newest' && 'dateDesc') || (params.sort == 'oldest' && 'dateAsc') || (params.sort == 'price_low' && 'priceAsc') || (params.sort == 'price_high' && 'priceDesc') || `null`}]","max":1},"id":"search","parse":"html","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"price":"{{f.price}}","sort":"{{f.sort}}"},"url":"/b-canada/{{f.kw | urlencode}}/{{f.pg}}k0l{{f.loc}}"}}],"task":"Search Kijiji classifieds in Canada","tos":{"notes":"robots.txt has no AI-agent rules (no Claude-User, ClaudeBot or anthropic-ai group, no Content-Signal), checked 2026-11-07. Terms not reviewed yet for automated access. One person's search: 1 request for one results page. Messages to sellers stay on kijiji.ca.","reviewed":false},"verify":{"checks":["length(output.listings) > `20`","output.total > `100`","length(output.listings[?top_ad]) == `0`","length(output.listings[?price_cad > `300`]) == `0`","length(output.listings[?starts_with(url, 'https://www.kijiji.ca/v-')]) == length(output.listings)","output.listings[*].listed == reverse(sort(output.listings[*].listed))"],"example_params":{"location":"ontario","max_price":300,"query":"road bike","sort":"newest"},"max_ms":6000},"version":1}