Ouedkniss
Ouedkniss
/ouedkniss/v1/search1 creditSearch Ouedkniss classifieds by keyword and/or category, filtered by wilaya (region) ids, city ids, price band, has-photo and has-price, with two sorts and paging (up to 48 ads per page). Give at least `query` or `category`. Returns the source's own `total_results`, the category Ouedkniss matched the search to, and the sibling categories it suggests.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | optional | — | Free-text keywords, in French or Arabic — the site's own search box. Give at least `query` or `category`. |
| category | optional | — | Ouedkniss category slug (e.g. `telephones`, `automobiles-voitures`, `immobilier-vente`). Read the live slugs with the `categories` action. Give at least `query` or `category`. |
| region_ids | optional | — | Numeric wilaya ids (16 = Alger). The `categories` action lists every id with its name. Names are not accepted — Ouedkniss filters on ids only. |
| city_ids | optional | — | Numeric city/commune ids (560 = Bab el Oued). These are NOT wilaya ids: passing a wilaya id here matches nothing. The `categories` action lists them. |
| price_min | optional | 0– | Lower bound of the price band, in the category's own price unit (see `price_unit` on every row). |
| price_max | optional | 0– | Upper bound of the price band, in the category's own price unit. |
| has_pictures | optional | — | true keeps only ads that carry at least one photo. |
| has_price | optional | — | true keeps only ads that state a price. |
| exchange | optional | yes · no | Filter on whether the seller accepts a swap. Omit for both. |
| delivery_available | optional | — | true keeps only ads that offer delivery. Ouedkniss publishes no 'no delivery' side of this filter, so false is rejected rather than silently ignored — read `has_delivery` on each row instead. |
| seller_type | optional | store · individual | Keep only ads from professional stores, or only ads from private sellers. Omit for both. |
| sort = refreshed | optional | refreshed · newest | Ouedkniss orders by the ad's refresh time by default; `newest` orders by original creation time. |
| page = 1 | optional | 1–10000 | 1-based page number. |
| page_size = 24 | optional | 1–48 | Ads per page, 1-48 (the site's own maximum is 48). |
| language = fr | optional | fr · ar · en | Language of the category and specification LABELS Ouedkniss returns. Ad titles and descriptions come back exactly as the seller typed them and are never translated. |
/ouedkniss/v1/listing1 creditFull detail of one Ouedkniss ad: title, complete description, price with its unit, wilaya and city, the store or private seller, every photo at full size and the ad's own specification table. Accepts the ad id or the ad URL.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| listing_id | optional | — | Numeric ad id — the digits after `-d` in the ad URL. Give `listing_id` or `url`. |
| url | optional | — | Full ouedkniss.com ad URL; the id is taken from it. Give `listing_id` or `url`. |
| language = fr | optional | fr · ar · en | Language of the category and specification LABELS Ouedkniss returns. Ad titles and descriptions come back exactly as the seller typed them and are never translated. |
/ouedkniss/v1/categories1 creditThe live Ouedkniss category tree — the resolver `search` needs, because a category slug is the strongest filter the marketplace has. With no `category` it returns the top-level categories off the site's own menu; with a `category` slug it returns that category with its children, its parent chain, its price units and its filterable specifications (each with the value list Ouedkniss allows), plus how many ads sit under it right now.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| category | optional | — | Category slug to open, e.g. `telephones`, `automobiles-voitures`. Omit to list the top-level categories. |
| language = fr | optional | fr · ar · en | Language of the category and specification LABELS Ouedkniss returns. Ad titles and descriptions come back exactly as the seller typed them and are never translated. |
/ouedkniss/v1/stores1 creditSearch the professional stores (boutiques) on Ouedkniss by name or keyword, with their location, follower count and how many ads they run.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | required | — | Store name or keyword. |
| page = 1 | optional | 1–10000 | 1-based page number. |
| page_size = 24 | optional | 1–48 | Stores per page, 1-48. |
| language = fr | optional | fr · ar · en | Language of the category and specification LABELS Ouedkniss returns. Ad titles and descriptions come back exactly as the seller typed them and are never translated. |
curl -X POST https://api.reefapi.com/ouedkniss/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.
Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.
Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.
No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.
Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.