Wattpad API endpoint
Searches Wattpad's story catalog by text or browses it by ranking, category and language, and returns one page of stories: id, title, description, cover, link, author, votes, reads, comments, chapter count, completed and mature flags, language, category ids, tags and dates. Give at least one of query, filter, category or language. filter is hot, new or featured; category is an id from wattpad-categories; language is an id from wattpad-languages. limit is 1 to 100 (default 20) and offset pages the results: a text search reaches offset 9999, while browsing without a query is capped at 1500 results. Browse pages can hold fewer stories than limit (or none) because Wattpad filters after paging, so advance with next_offset rather than the item count.
/wattpad/searchGive at least one of query, filter, category or language; they combine.
Parameters:
query: text to search for, up to 200 characters. A text search pages as far as offset 9999.filter: hot (currently popular), new (recently published) or featured (Wattpad's featured stories).category: a category id from wattpad-categories (for example 4 is Romance). An unknown id returns 400.language: a story language id: 1 (English), 2 (Français), 3 (Italiano), 4 (Deutsch), 5 (Español), 6 (Português), 7 (Русский), 8 (繁體中文), 9 (日本語), 10 (한국어), 11 (Other), 12 (简体中文), 13 (Nederlands), 14 (Polski), 15 (Română), 16 (العربية), 17 (עברית), 18 (Filipino), 19 (Tiếng Việt), 20 (Bahasa Indonesia), 21 (हिन्दी), 22 (Bahasa Melayu), 23 (Türkçe), 24 (Česky), 25 (മലയാളം), 26 (Svenska), 27 (Norsk), 28 (Magyar), 29 (Dansk), 30 (ελληνικά), 32 (ภาษาไทย), 33 (Íslenska), 34 (Suomi), 35 (Eesti), 36 (Latviešu), 37 (Lietuvių), 38 (Català), 39 (Босански), 40 (Српски), 41 (Hrvatski), 42 (Slovenščina), 43 (Български), 44 (Slovenčina), 46 (Українська), 47 (বাংলা), 48 (اُردُو), 49 (தமிழ்), 50 (Kiswahili), 51 (Afrikaans), 53 (ગુજરાતી). Any other id returns 400.limit: 1 to 100; defaults to 20.offset: zero-based result offset, from 0 to 9999 when query is set and from 0 to 1499 when it is not.Notable response behavior:
total is the number of matches Wattpad reports. Browsing without a text query reports at most 1500.query) can hold fewer than limit stories, or none, because Wattpad filters after paging. Keep going with next_offset; it is absent on the last page.category_ids omits the "no category" placeholder; names come from wattpad-categories.Example response (long values and lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"stories": [
{
"id": "295638501",
"title": "Bromance turned Romance",
"url": "https://www.wattpad.com/story/295638501-bromance-turned-romance",
"description": "Bryce and Lance were best friends. But Bryce always had a crush on Lance. Bryce would always get jealous when…",
"cover": "https://img.wattpad.com/cover/295638501-256-k193979.jpg",
"author": {
"username": "Ruth_Margret",
"name": "Your_mom69",
"avatar": "https://img.wattpad.com/useravatar/Ruth_Margret.128.946086.jpg",
"verified": false
},
"votes": 1830,
"reads": 151218,
"comments": 448,
"parts": 15,
"completed": true,
"mature": false,
"language": {
"id": 1,
"name": "English"
},
"category_ids": [
4
],
"tags": [
"boyxboy",
"bromance"
],
"created_at": "2021-12-22T23:24:43Z",
"modified_at": "2026-10-07T23:19:53Z"
},
{
"id": "372197791",
"title": "ᴛʜᴇ ᴄᴏʟʟᴇɢᴇ ʀᴏᴍᴀɴᴄᴇ [ᴄᴏᴍᴘʟᴇᴛᴇᴅ]",
"url": "https://www.wattpad.com/story/372197791-%E1%B4%9B%CA%9C%E1%B4%87-%E1%B4%84%E1%B4%8F%CA%9F%CA%9F%E1%B4%87%C9%A2…",
"description": "Nikita Joshi:\nA 20 year old 3rd year CS student studying at University of Bournbrooke, India. She's transferre…",
"cover": "https://img.wattpad.com/cover/372197791-256-k79464.jpg",
"author": {
"username": "thewanderingquill_",
"name": "thewanderingquill_",
"avatar": "https://img.wattpad.com/useravatar/thewanderingquill_.128.914396.jpg",
"verified": false
},
"votes": 86803,
"reads": 1957201,
"comments": 2290,
"parts": 70,
"completed": true,
"mature": false,
"language": {
"id": 1,
"name": "English"
},
"category_ids": [
4
],
"tags": [
"college",
"collegeromance"
],
"created_at": "2024-07-02T07:28:12Z",
"modified_at": "2026-10-08T11:35:05Z"
}
],
"total": 2399524,
"limit": 2,
"offset": 0,
"next_offset": 2
}
}
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | No | Text to search for in story titles, descriptions and tags, up to 200 characters | romance | |
| filter | string | No | Ranking: hot is currently popular, new is recently published, featured is Wattpad's featured stories Allowed values: hot, new, featured. | hot | |
| category | integer | No | Category id from wattpad-categories, for example 4 for Romance | 4 | |
| language | integer | No | Story language id from wattpad-languages, for example 1 for English Allowed values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 53. | 1 | |
| limit | integer | No | 20 | Page size, 1 to 100; defaults to 20 | 20 |
| offset | integer | No | Zero-based result offset; below 10000 with query, below 1500 without | 0 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/wattpad/search?query=coffee&filter=hot&language=en&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"stories": [
{
"id": "295638501",
"title": "Bromance turned Romance",
"url": "https://www.wattpad.com/story/295638501-bromance-turned-romance",
"description": "Bryce and Lance were best friends. But Bryce always had a crush on Lance. Bryce would always get jealous when…",
"cover": "https://img.wattpad.com/cover/295638501-256-k193979.jpg",
"author": {
"username": "Ruth_Margret",
"name": "Your_mom69",
"avatar": "https://img.wattpad.com/useravatar/Ruth_Margret.128.946086.jpg",
"verified": false
},
"votes": 1830,
"reads": 151218,
"comments": 448,
"parts": 15,
"completed": true,
"mature": false,
"language": {
"id": 1,
"name": "English"
},
"category_ids": [
4
],
"tags": [
"boyxboy",
"bromance"
],
"created_at": "2021-12-22T23:24:43Z",
"modified_at": "2026-10-07T23:19:53Z"
},
{
"id": "372197791",
"title": "ᴛʜᴇ ᴄᴏʟʟᴇɢᴇ ʀᴏᴍᴀɴᴄᴇ [ᴄᴏᴍᴘʟᴇᴛᴇᴅ]",
"url": "https://www.wattpad.com/story/372197791-%E1%B4%9B%CA%9C%E1%B4%87-%E1%B4%84%E1%B4%8F%CA%9F%CA%9F%E1%B4%87%C9%A2…",
"description": "Nikita Joshi:\nA 20 year old 3rd year CS student studying at University of Bournbrooke, India. She's transferre…",
"cover": "https://img.wattpad.com/cover/372197791-256-k79464.jpg",
"author": {
"username": "thewanderingquill_",
"name": "thewanderingquill_",
"avatar": "https://img.wattpad.com/useravatar/thewanderingquill_.128.914396.jpg",
"verified": false
},
"votes": 86803,
"reads": 1957201,
"comments": 2290,
"parts": 70,
"completed": true,
"mature": false,
"language": {
"id": 1,
"name": "English"
},
"category_ids": [
4
],
"tags": [
"college",
"collegeromance"
],
"created_at": "2024-07-02T07:28:12Z",
"modified_at": "2026-10-08T11:35:05Z"
}
],
"total": 2399524,
"limit": 2,
"offset": 0,
"next_offset": 2
}
}Request schema
No body schema
Response schema
#/definitions/wattpad.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | wattpad.SearchResponse | No | ||||
| data.limit | integer | No | ||||
| data.next_offset | integer | No | NextOffset is the offset of the next page, absent on the last one. A page can hold fewer than limit stories (or none) when Wattpad filters after paging, so advance by next_offset rather than by the item count. | |||
| data.offset | integer | No | ||||
| data.stories | array | No | ||||
| data.stories[].author | wattpad.Author | No | ||||
| data.stories[].author.avatar | string | No | ||||
| data.stories[].author.name | string | No | ||||
| data.stories[].author.username | string | No | ||||
| data.stories[].author.verified | boolean | No | ||||
| data.stories[].category_ids | array | No | ||||
| data.stories[].comments | integer | No | ||||
| data.stories[].completed | boolean | No | ||||
| data.stories[].cover | string | No | ||||
| data.stories[].created_at | string | No | ||||
| data.stories[].description | string | No | ||||
| data.stories[].id | string | No | ||||
| data.stories[].language | wattpad.Language | No | ||||
| data.stories[].language.id | integer | No | ||||
| data.stories[].language.name | string | No | ||||
| data.stories[].mature | boolean | No | ||||
| data.stories[].modified_at | string | No | ||||
| data.stories[].parts | integer | No | ||||
| data.stories[].reads | integer | No | ||||
| data.stories[].tags | array | No | ||||
| data.stories[].title | string | No | ||||
| data.stories[].url | string | No | ||||
| data.stories[].votes | integer | No | ||||
| data.total | integer | No | Total is the number of matches Wattpad reports; browse requests (no text query) are capped at 1500. | |||
| msg | string | No | OK |
| 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/wattpad/search?query=coffee&filter=hot&language=en&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"