Slickdeals API endpoint
Returns one page of Slickdeals' own homepage deal listing -- the deals Slickdeals itself is currently featuring, distinct from a keyword search or a single category/tag's own listing. Each deal carries the same fields as GET /slickdeals/search/advanced's results (real integer vote/comment/view counts, store id, discount, status flags), plus is_fire_deal and has_rebate flags this feed's cards carry. Pagination is next-page-only (has_next_page), since the page itself exposes no total page count.
/slickdeals/frontpageQuery parameters:
page (optional) — 1-based frontpage listing page, default 1.Response includes page, has_next_page, deals[], source_url, and fetched_at. has_next_page reflects whether the page itself exposed a further page link — Slickdeals' own homepage pagination is next/prev-only, with no total page count in its state payload.
Each deal has:
thread_id, title, url — the deal's canonical identity.image_url (optional) — the deal's thumbnail image.list_price, final_price, discount (optional) — price and discount percent.store_id, store (optional) — the merchant.vote_score, comment_count, views_count — community engagement counts, as integers.forum_id (optional) — Slickdeals' own legacy sub-forum id.found_by (optional) — the public Slickdeals username who posted the deal.posted_at (optional) — when the deal was posted.is_frontpage, is_popular, is_new, is_expired — status flags Slickdeals attaches to the deal.is_fire_deal, has_rebate — additional status flags this feed's own cards carry (a "fire" deal is a particularly hot deal Slickdeals highlights; a rebate deal has mail-in/instant rebate pricing baked into final_price).| Field | Filled in, of 197 checked | Values in the sample |
|---|---|---|
| thread_id | 197 | |
| title | 197 | “Pixel Panda Waterproof Winter Snow Gloves w/ 3M Thinsulate…” and 195 other values |
| url | 197 | slickdeals.net |
| image_url | 197 | static.slickdealscdn.com |
| list_price | 187 | “$15” and 95 other values |
| final_price | 197 | “$9.00” and 120 other values |
| discount | 187 | 5 to 87, median 48 |
| store_id | 197 | |
| store | 197 | “Amazon” and 30 other values |
| vote_score | 197 | 17 to 293, median 37 |
| comment_count | 197 | 0 to 50, median 7 |
| views_count | 197 | 967 to 1,941,262, median 5,284 |
| forum_id | 197 | |
| found_by | 197 | “CartCipher” and 58 other values |
| posted_at | 197 | 2026-10-12 to 2026-10-13 |
| is_frontpage | 197 | true in 197 of 197 |
| is_popular | 197 | true in 196 of 197 |
| is_new | 197 | true in 197 of 197 |
| is_expired | 197 | true in 15 of 197 |
| is_fire_deal | 197 | true in 20 of 197 |
| has_rebate | 197 | true in 0 of 197 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| page | integer | No | 1-based frontpage listing page, default 1 | 1 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/slickdeals/frontpage?page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"page": 1,
"has_next_page": true,
"deals": [
{
"thread_id": 20012805,
"title": "Culver's Restaurants: Double ButterBurger w/ Cheese",
"url": "https://slickdeals.net/f/20012805-...",
"image_url": "https://static.slickdealscdn.com/attachment/1/6/6/6/1/8/450x450/21593049.thumb",
"final_price": "Buy 1 Get 1 Free",
"store_id": 55168,
"store": "Culvers",
"vote_score": 89,
"comment_count": 18,
"views_count": 9305,
"forum_id": 9,
"found_by": "ayasin1121",
"posted_at": "2026-09-14T12:36:27-07:00",
"is_frontpage": true,
"is_popular": true,
"is_new": true,
"is_expired": false,
"is_fire_deal": true,
"has_rebate": false
}
],
"source_url": "https://slickdeals.net/",
"fetched_at": "2026-09-15T09:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/slickdeals.frontpageResponseDoc
| 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.FrontpageResponse | No | ||||
| data.deals | array | No | ||||
| data.deals[].comment_count | integer | No | 4 | |||
| data.deals[].discount | integer | No | 26 | |||
| data.deals[].final_price | string | No | $66 | |||
| data.deals[].forum_id | integer | No | 9 | |||
| data.deals[].found_by | string | No | htp182 | |||
| data.deals[].has_rebate | boolean | No | false | |||
| data.deals[].image_url | string | No | ||||
| data.deals[].is_expired | boolean | No | false | |||
| data.deals[].is_fire_deal | boolean | No | false | IsFireDeal and HasRebate are populated on Frontpage's own deal cards; GET /slickdeals/search/advanced's result cards were not observed carrying either field live, so they read as their zero value there. | ||
| data.deals[].is_frontpage | boolean | No | true | |||
| data.deals[].is_new | boolean | No | false | |||
| data.deals[].is_popular | boolean | No | true | |||
| data.deals[].list_price | string | No | $90 | |||
| data.deals[].posted_at | string | No | ||||
| data.deals[].store | string | No | Newegg | |||
| data.deals[].store_id | integer | No | 701 | |||
| data.deals[].thread_id | integer | No | 19618338 | |||
| data.deals[].title | string | No | Anker 4-Port up to 140W USB-C Laptop Charger w/ 5' Cable | |||
| data.deals[].url | string | No | ||||
| data.deals[].views_count | integer | No | 3274 | |||
| data.deals[].vote_score | integer | No | 20 | |||
| data.fetched_at | string | No | ||||
| data.has_next_page | boolean | No | true | HasNextPage reflects whether the page itself exposed a further page link, not a total page count -- Slickdeals' own homepage pagination is next/prev-only, with no total page count in its state payload. | ||
| data.page | integer | No | 1 | |||
| 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/frontpage?page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"