Slickdeals API endpoint
Searches Slickdeals (slickdeals.net), a community deal/coupon aggregator, for deal threads matching a free-text keyword query. Each result is one community-submitted deal thread with its title (which conventionally embeds the deal price), a best-effort price extracted from that title, the merchant domain, the community vote ("thumb") score, the public Slickdeals username who posted it, and when it was posted. Pair a result's thread_id or url with GET /slickdeals/deal for the full detail record, including comment count and category. An optional forum_id restricts results to one Slickdeals legacy sub-forum (e.g. Hot Deals, Coupons) -- obtain a value from GET /slickdeals/forums, a closed enum validated before the request is made. An optional deal_type_id restricts results to one Slickdeals deal-type tag (e.g. Coupon, Free / Freebie, YMMV) -- obtain a value from GET /slickdeals/deal-types, also a closed enum validated before the request is made; composes with forum_id.
/slickdeals/searchQuery parameters:
q (required) — free-text keyword query, e.g. laptop.forum_id (optional) — restrict results to one Slickdeals legacy sub-forum (e.g. 9 for Hot Deals, 10 for Coupons). Must come from GET /slickdeals/forums — a closed enum validated before the request reaches upstream, not a passthrough value.deal_type_id (optional) — restrict results to one Slickdeals deal-type tag (e.g. 1774 for Free / Freebie, 1688 for Coupon). Must come from GET /slickdeals/deal-types — also a closed enum validated before the request reaches upstream. Composes with forum_id.Response includes query, results[], count, source_url, and fetched_at.
Each result has:
thread_id — Slickdeals' own numeric thread id.title — the deal thread's title. Slickdeals titles conventionally embed the deal price.url — the deal's canonical page, with tracking query parameters stripped. Pass this straight to /slickdeals/deal's url parameter.price (optional) — a best-effort price extracted from title, not a separately structured upstream field.store (optional) — the outbound merchant domain (e.g. ebay.com).vote_score — the community "thumb" vote score (can be negative).found_by (optional) — the public Slickdeals username who posted the deal.published_at (optional) — when the deal was posted, RFC3339.A query with no matching deals returns an empty results list, not an error.
| Field | Filled in, of 25 checked | Values in the sample |
|---|---|---|
| thread_id | 25 | |
| title | 25 | “Amazon – FLYTOCCA Laptop Screen Extender - $74.09 w/ Code” and 23 other values |
| url | 25 | slickdeals.net |
| price | 25 | “$74.09” and 22 other values |
| store | 24 | amazon.com (10), bestbuy.com (10), walmart.com (2) and 2 more |
| vote_score | 25 | -3 to 75, median 8 |
| found_by | 25 | “CartCipher” and 15 other values |
| published_at | 25 | 2026-10-12 to 2026-10-13 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Free-text keyword query | laptop | |
| forum_id | integer | No | Restrict results to one Slickdeals legacy sub-forum, from GET /slickdeals/forums | 9 | |
| deal_type_id | integer | No | Restrict results to one Slickdeals deal-type tag, from GET /slickdeals/deal-types | 1774 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/slickdeals/search?q=laptop" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "laptop",
"results": [
{
"thread_id": 20015817,
"title": "Microsoft Surface Laptop 5 13.5\" 2.5GHz/16GB/256GB - Refurb w/Warranty $358.53",
"url": "https://slickdeals.net/f/20015817-microsoft-surface-laptop-5-13-5-2-5ghz-16gb-256gb-refurb-w-warranty-358-53",
"price": "$358.53",
"store": "ebay.com",
"vote_score": -2,
"found_by": "BML6182",
"published_at": "2026-09-15T02:13:22Z"
}
],
"count": 1,
"source_url": "https://slickdeals.net/newsearch.php?q=laptop&rss=1",
"fetched_at": "2026-09-15T04:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/slickdeals.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | slickdeals.SearchResponse | No | ||||
| data.count | integer | No | 25 | |||
| data.fetched_at | string | No | ||||
| data.query | string | No | laptop | |||
| data.results | array | No | ||||
| data.results[].found_by | string | No | BML6182 | |||
| data.results[].price | string | No | $358.53 | |||
| data.results[].published_at | string | No | 2026-09-15T02:13:22Z | |||
| data.results[].store | string | No | ebay.com | |||
| data.results[].thread_id | integer | No | 20015817 | |||
| data.results[].title | string | No | Microsoft Surface Laptop 5 13.5" 2.5GHz/16GB/256GB - Refurb w/Warranty $358.53 | Title is Slickdeals' own thread title, which conventionally embeds the deal price (e.g. "... $358.53") -- Price is a best-effort convenience field extracted from it, not a separately structured upstream field. | ||
| data.results[].url | string | No | https://slickdeals.net/f/20015817-microsoft-surface-laptop-5-13-5-2-5ghz-16gb-256gb-refurb-w-warranty-358-53 | |||
| data.results[].vote_score | integer | No | 16 | |||
| data.source_url | string | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/slickdeals/search?q=laptop" \
-H "x-api-key: $CRAWLORA_API_KEY"