RetailMeNot API endpoint
Returns one page of RetailMeNot blog posts (title, slug, URL, excerpt, description, author, published and modified dates, image, categories, and tags) with total and total pages, newest first by default. Filter by category slug, tag slug, and/or a search query; order by date, modified, title, or relevance (relevance requires query). A page past the end returns an empty list.
/retailmenot/blog-postsQuery parameters:
query (optional): search post text.category (optional): category slug from /api/v1/retailmenot/blog-categories (for example food). An unknown slug returns 404.tag (optional): tag slug from /api/v1/retailmenot/blog-tags (for example black-friday). An unknown slug returns 404.order_by (optional, default date): one of date, modified, title, relevance. relevance requires query.order (optional, default desc): desc or asc.page (optional, default 1) and page_size (optional, default 20, 1-100).Returns one page of posts (each with id, slug, url, title, excerpt, description, author, published and modified dates, image_url, and categories/tags with slugs and names), plus total and total_pages. A page past the end returns an empty list. Use a slug with /api/v1/retailmenot/blog-post for the full article.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| slug | 20 | |
| url | 20 | retailmenot.com |
| title | 20 | median 62 characters |
| excerpt | 20 | median 313 characters |
| description | 19 | median 131 characters |
| author | 20 | |
| published | 20 | 2026-02-26 to 2026-09-30 |
| modified | 20 | 2026-04-17 to 2026-09-30 |
| image_url | 20 | retailmenot.com |
| categories | 20 | median 1 entry |
| tags | 19 | median 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | No | Search post text | black friday | |
| category | string | No | Category slug from /retailmenot/blog-categories | food | |
| tag | string | No | Tag slug from /retailmenot/blog-tags | black-friday | |
| order_by | string | No | Sort field Allowed values: date, modified, title, relevance. | ||
| order | string | No | Sort direction Allowed values: desc, asc. | ||
| page | integer | No | Page number, starting at 1 | ||
| page_size | integer | No | Posts per page (1-100) | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/retailmenot/blog-posts?query=coffee&order_by=date&order=desc&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 0,
"message": "success",
"data": {
"category": "food",
"order_by": "date",
"order": "desc",
"page": 1,
"page_size": 20,
"total": 99,
"total_pages": 5,
"posts": [
{
"id": 74532,
"slug": "black-friday-cyber-monday-restaurant-deals",
"url": "https://www.retailmenot.com/blog/black-friday-cyber-monday-restaurant-deals.html",
"title": "40+ Cyber Week Restaurant Deals, Bonus Gift Cards and Food Freebies to Expect in 2026",
"author": "Ashley Keegan",
"published": "2026-09-30T17:59:26",
"categories": [
{
"id": 13,
"slug": "food",
"name": "Food"
}
],
"tags": [
{
"id": 29,
"slug": "black-friday",
"name": "Black Friday"
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/retailmenot.blogPostsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| data | retailmenot.BlogPostsResponse | No | ||||
| data.category | string | No | ||||
| data.order | string | No | desc, asc | |||
| data.order_by | string | No | date, modified, title, relevance | |||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.posts | array | No | ||||
| data.posts[].author | string | No | ||||
| data.posts[].categories | array | No | BlogTerm record, 5 fields: count, id, name, slug, url. Described under RetailMeNot blog post API. | |||
| data.posts[].description | string | No | ||||
| data.posts[].excerpt | string | No | ||||
| data.posts[].id | integer | No | ||||
| data.posts[].image_url | string | No | ||||
| data.posts[].modified | string | No | ||||
| data.posts[].published | string | No | ||||
| data.posts[].slug | string | No | ||||
| data.posts[].tags | array | No | BlogTerm record, 5 fields: count, id, name, slug, url. Described under RetailMeNot blog post API. | |||
| data.posts[].title | string | No | ||||
| data.posts[].url | string | No | ||||
| data.query | string | No | ||||
| data.tag | string | No | ||||
| data.total | integer | No | ||||
| data.total_pages | integer | No |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/retailmenot/blog-posts?query=coffee&order_by=date&order=desc&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"