Public story catalog discovery
Use Wattpad endpoints to turn public story catalog discovery into repeatable API requests with documented inputs and JSON responses.
Explore Wattpad's public reading catalog as structured JSON — discover categories and languages, search stories and authors, and retrieve story, chapter, recommendation, profile, and comment metadata.
Discover public Wattpad stories and authors, then retrieve story chapters, recommendations, and public chapter comments as JSON.
Endpoint families
6
Documented params
32
Examples
11
Live catalog snapshot
Active endpoints
11
Methods
GET
Required params
19
Schema refs
11
{
"platform": "Wattpad",
"endpoint": "wattpad-search",
"method": "GET",
"path": "/wattpad/search",
"auth": "apiKey"
}Use cases
Discover public Wattpad stories and authors, then retrieve story chapters, recommendations, and public chapter comments as JSON.
Use Wattpad endpoints to turn public story catalog discovery into repeatable API requests with documented inputs and JSON responses.
Use Wattpad endpoints to turn author and chapter monitoring into repeatable API requests with documented inputs and JSON responses.
Use Wattpad endpoints to turn recommendation and comment research into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Wattpad endpoint catalog — 11 endpoints, 32 documented request parameters, and 11 published response schemas — the same catalog Docs and Playground run against.
11 documented Wattpad endpoints, grouped into 11 request families — Categories, Languages and Part, plus 8 more.
32 request parameters are documented across those Wattpad endpoints, 19 of them required — the full input contract is public before you write any integration code.
11 of the 11 Wattpad endpoints ship a recorded example response, and 11 carry a documented response schema — you can code against the real JSON before the first request.
Wattpad endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
11 hosted MCP tools back the Wattpad endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
/wattpad/categories
/wattpad/languages
/wattpad/part
/wattpad/part-comments
/wattpad/search
/wattpad/search-users
Endpoint catalog
/wattpad/categoriesReturns Wattpad's story categories (Romance, Fantasy, Fanfiction, Werewolf, ...) with id, name and English name. These ids are the values the category parameter of wattpad-search takes and the values in every story's category_ids. The list is read live from Wattpad.
MCP tool wattpad_categories
/wattpad/languagesReturns the story languages Wattpad's search can filter by, each with its numeric id and native-script name (50 at the time of writing). These ids are the values the language parameter of wattpad-search takes.
MCP tool wattpad_languages
/wattpad/searchSearches 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.
Response notes
- `total` is the number of matches Wattpad reports. Browsing without a text query reports at most 1500. - A browse page (no `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`. - Only public story metadata is read. Chapter text is never returned. Example response (long values and lists shortened): ```json { "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 } } ```
MCP tool wattpad_search
/wattpad/search-usersSearches Wattpad's authors by username or name and returns one page: username, display name, bio, avatar, verified flag, published story count and follower count. limit is 1 to 100 (default 20) and offset pages the results. Authors with a private profile or who have opted out of crawling are left out, so a page can hold fewer authors than limit; advance with next_offset.
Response notes
- Authors with a private profile, or who have turned off Wattpad's "allow crawlers" setting, are left out, so a page can hold fewer authors than `limit`. Advance with `next_offset`, which is absent when the page was short. - Email addresses that authors paste into their bios are replaced with `[email removed]`. - Personal attributes such as gender and locale are never returned. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "users": [ { "username": "example_author_1", "avatar": "https://img.wattpad.com/useravatar/example_author_1.128.1.jpg", "verified": false, "stories_published": 2, "followers": 1, "description": "", "name": "" }, { "username": "example_author_2", "avatar": "https://img.wattpad.com/useravatar/example_author_2.128.1.jpg", "verified": false, "stories_published": 0, "followers": 0, "description": "", "name": "" } ], "limit": 3, "offset": 0, "next_offset": 3 } } ```
MCP tool wattpad_search_users
/wattpad/storyReturns one Wattpad story's public details: title, description, cover, link, author, votes, reads, comments, chapter count, completed and mature flags, language, category ids, tags, first chapter id, last published date, rating and copyright codes, paywall flag and dates. story_id is the numeric id from the story's wattpad.com link; the full link is also accepted. A story that does not exist returns not found. Chapter text is never returned.
Response notes
- `votes`, `reads` and `comments` are Wattpad's counters for the whole story; `parts` is the chapter count. - `rating` and `copyright` are Wattpad's own numeric codes, passed through unchanged. - `paywalled` is `true` for stories whose later chapters are paid; `paid_model` names the scheme when there is one. - `last_published_at` is when the newest chapter went up, a better freshness signal than `modified_at`. - `category_ids` omits the "no category" placeholder; names come from `wattpad-categories`. - A story that does not exist returns `404`; a malformed `story_id` returns `400`. - Only public story metadata is read. Chapter text is never returned. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "story": { "id": "344352588", "title": "Lose You To Love Me (Mafia Romance-Complete)", "url": "https://www.wattpad.com/story/344352588-lose-you-to-love-me-mafia-romance-complete", "description": "Amelia Astoria, under an old pact with her grandfather and the Don of the Costra Nostra that runs New York Cit…", "cover": "https://img.wattpad.com/cover/344352588-256-k100741.jpg", "author": { "username": "notjustarandomgirl", "name": "Shorty ❤", "avatar": "https://img.wattpad.com/useravatar/notjustarandomgirl.128.763251.jpg", "verified": true }, "votes": 44463, "reads": 2577558, "comments": 9525, "parts": 82, "completed": true, "mature": false, "language": { "id": 1, "name": "English" }, "category_ids": [ 4 ], "tags": [ "adult", "adultromance" ], "created_at": "2023-06-16T20:47:17Z", "modified_at": "2026-06-23T19:21:09Z", "first_part_id": "1353317758", "last_published_at": "2026-06-23T19:21:10Z", "rating": 1, "copyright": 1, "paywalled": false } } } ```
MCP tool wattpad_story
/wattpad/story-partsReturns a Wattpad story's chapter list, in reading order: id, title, link, word count, reads, votes, comments, length, and created and modified dates for every chapter. The per-chapter reads show where readers drop off. Use it to see how a story is paced and which chapters readers react to. story_id is the numeric story id, or its wattpad.com link. Chapter text is never returned.
Response notes
- Each part carries `id`, `title`, `url`, `word_count`, `reads`, `votes`, `comments`, `length` and its created and modified dates. `reads` per chapter gives a reader-retention curve across the story. - `total` is the story's chapter count as Wattpad reports it; draft chapters are never listed. - A story that does not exist returns `404`; a malformed `story_id` returns `400`. - Only chapter metadata is read. Chapter text is never returned. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "story_id": "344352588", "title": "Lose You To Love Me (Mafia Romance-Complete)", "total": 82, "parts": [ { "id": "1353317758", "title": "CHAPTER 0", "url": "https://www.wattpad.com/1353317758-lose-you-to-love-me-mafia-romance-complete-chapter", "word_count": 1923, "reads": 139834, "votes": 1558, "comments": 540, "length": 9613, "draft": false, "created_at": "2023-06-16T20:49:32Z", "modified_at": "2024-07-20T09:43:51Z" }, { "id": "1353318446", "title": "CHAPTER 1", "url": "https://www.wattpad.com/1353318446-lose-you-to-love-me-mafia-romance-complete-chapter", "word_count": 1867, "reads": 68686, "votes": 1096, "comments": 148, "length": 9332, "draft": false, "created_at": "2023-06-16T20:50:37Z", "modified_at": "2023-06-18T12:40:20Z" }, { "id": "1353318810", "title": "CHAPTER 2", "url": "https://www.wattpad.com/1353318810-lose-you-to-love-me-mafia-romance-complete-chapter", "word_count": 2671, "reads": 57036, "votes": 975, "comments": 162, "length": 13353, "draft": false, "created_at": "2023-06-16T20:53:47Z", "modified_at": "2023-06-16T20:53:47Z" } ] } } ```
MCP tool wattpad_story_parts
/wattpad/partReturns one Wattpad chapter's metadata: id, title, link, word count, reads, votes, comments, length, dates and the story it belongs to (id and title). part_id is the numeric chapter id from wattpad-story-parts. A chapter that does not exist returns not found. Chapter text is never returned.
Response notes
- `reads`, `votes` and `comments` are the chapter's own counters; `word_count` and `length` describe its size. - `story_id` and `story_title` name the story the chapter belongs to; pass `story_id` to `wattpad-story`. - A chapter that does not exist returns `404`; a malformed `part_id` returns `400`. - Only chapter metadata is read. Chapter text is never returned. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "part": { "id": "1353317758", "title": "CHAPTER 0", "url": "https://www.wattpad.com/1353317758-lose-you-to-love-me-mafia-romance-complete-chapter", "word_count": 1923, "reads": 139834, "votes": 1558, "comments": 540, "length": 9613, "draft": false, "created_at": "2023-06-16T20:49:32Z", "modified_at": "2024-07-20T09:43:51Z", "story_id": "344352588", "story_title": "Lose You To Love Me (Mafia Romance-Complete)" } } } ```
MCP tool wattpad_part
/wattpad/part-commentsReturns one page of the public reader comments on a Wattpad chapter, newest first: id, text, commenter username and avatar, reply count, whether it is a reply, parent id, link and creation time. part_id is the numeric chapter id from wattpad-story-parts. limit is 1 to 100 (default 20) and offset pages the list; next_offset is absent on the last page. A chapter with no comments, or an unknown chapter, returns an empty list.
Response notes
- Comments are newest first. `next_offset` is absent when a page held fewer comments than `limit`. - Only the commenter's public username and avatar are returned. - A chapter with no comments, and a chapter id that does not exist, both return an empty list. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "part_id": "1353317758", "comments": [ { "id": "1353317758##1786945711#46c3b40fc6", "body": "Great chapter!", "author": "example_reader_1", "author_avatar": "https://a.wattpad.com/useravatar/example_reader_1.256.1.jpg", "url": "https://www.wattpad.com/1353317758/comment/1353317758##1786945711#46c3b40fc6", "replies": 0, "is_reply": false, "created_at": "2026-08-17T05:48:31Z" }, { "id": "1353317758#f1283b1c352f2cb6af1584a8b5418f52#1785145009#0d89a5414a", "body": "Cannot wait for the next one.", "author": "example_reader_2", "author_avatar": "https://a.wattpad.com/useravatar/example_reader_2.256.1.jpg", "url": "https://www.wattpad.com/1353317758/paragraph/f1283b1c352f2cb6af1584a8b5418f52/comment/1353317758#f1283b1c352f2…", "replies": 0, "is_reply": false, "created_at": "2026-07-27T09:36:49Z" }, { "id": "1353317758#3449c0a9d90c221be5cf5da6bddc38cc#1785144905#2113adf04e", "body": "Plot twist!", "author": "example_reader_3", "author_avatar": "https://a.wattpad.com/useravatar/example_reader_3.256.1.jpg", "url": "https://www.wattpad.com/1353317758/paragraph/3449c0a9d90c221be5cf5da6bddc38cc/comment/1353317758#3449c0a9d90c2…", "replies": 0, "is_reply": false, "created_at": "2026-07-27T09:35:05Z" } ], "limit": 3, "offset": 0, "next_offset": 3 } } ```
MCP tool wattpad_part_comments
/wattpad/story-recommendationsReturns the stories Wattpad recommends alongside one story (readers of this also read these), with the same fields as wattpad-search: id, title, description, cover, link, author, votes, reads, comments, chapter count, completed and mature flags, language, category ids, tags and dates. story_id is the numeric story id or its wattpad.com link. Wattpad returns at most 18 recommendations and does not page; limit is 1 to 20.
MCP tool wattpad_story_recommendations
/wattpad/userReturns a Wattpad author's public profile: username, display name, bio, avatar, location, website, verified and ambassador flags, follower and following counts, votes received, published story count, reading list count and join date. username is the name from the author's wattpad.com/user/ link, case-insensitive. Authors with a private profile or who have opted out of crawling are not returned. An unknown author returns not found.
Response notes
- `followers`, `following`, `votes_received`, `stories_published` and `lists` are Wattpad's public counters. - Personal attributes such as gender, locale and linked social account ids are never returned. - An author with a private profile, or who has turned off Wattpad's "allow crawlers" setting, returns `403`. - An unknown author returns `404`; a malformed `username` returns `400`. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "user": { "username": "notjustarandomgirl", "avatar": "https://img.wattpad.com/useravatar/notjustarandomgirl.128.763251.jpg", "background": "https://img.wattpad.com/userbg/notjustarandomgirl.50380.jpg", "description": "welcome to my world of fiction! New chapters every week.", "location": "London", "website": "patreon.com/notjustarandomgirl", "url": "https://www.wattpad.com/notjustarandomgirl", "verified": true, "ambassador": false, "votes_received": 3386470, "stories_published": 9, "followers": 317276, "following": 7, "lists": 1, "joined_at": "2012-01-15T05:01:34Z", "modified_at": "2024-08-22T00:49:22Z" } } } ```
MCP tool wattpad_user
/wattpad/user-storiesReturns one page of the stories a Wattpad author has published, with the same fields as wattpad-search: id, title, description, cover, link, votes, reads, comments, chapter count, completed and mature flags, language, category ids, tags and dates. username is the name from the author's wattpad.com/user/ link. limit is 1 to 100 (default 20) and offset pages the list; next_offset is absent on the last page. Authors with a private profile or who have opted out of crawling are not returned. This call reads the author's access settings first, so it costs two requests.
Response notes
- Each story has the same fields as `wattpad-search`. - `total` is the author's published story count; `next_offset` is absent on the last page. - An author with a private profile, or who has turned off Wattpad's "allow crawlers" setting, returns `403` and none of their works are listed. - An unknown author returns `404`; a malformed `username` returns `400`. - This call reads the author's access settings before listing, so it costs two requests. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "username": "notjustarandomgirl", "stories": [ { "id": "411906274", "title": "HOW TO: Get Out Of Friendzone", "url": "https://www.wattpad.com/story/411906274-how-to-get-out-of-friendzone", "description": "When Kate discovers her best friend, Justin, is falling for the this girl, Emily, panic sets in. Desperate to…", "cover": "https://img.wattpad.com/cover/411906274-256-k108988.jpg", "author": { "username": "notjustarandomgirl", "name": "Shorty ❤", "avatar": "https://img.wattpad.com/useravatar/notjustarandomgirl.128.763251.jpg", "verified": true }, "votes": 96, "reads": 2032, "comments": 24, "parts": 9, "completed": false, "mature": false, "language": { "id": 1, "name": "English" }, "category_ids": [ 4 ], "tags": [ "basketballplayer", "bestfriends" ], "created_at": "2026-05-29T16:00:07Z", "modified_at": "2026-10-23T21:36:29Z" }, { "id": "395667114", "title": "Heartless", "url": "https://www.wattpad.com/story/395667114-heartless", "description": "Reading LOSE YOU TO LOVE ME is highly recommended, but can stand alone.\n\n\"I hope you will fall in love, so dam…", "cover": "https://img.wattpad.com/cover/395667114-256-k212991.jpg", "author": { "username": "notjustarandomgirl", "name": "Shorty ❤", "avatar": "https://img.wattpad.com/useravatar/notjustarandomgirl.128.763251.jpg", "verified": true }, "votes": 113, "reads": 6160, "comments": 25, "parts": 5, "completed": false, "mature": false, "language": { "id": 1, "name": "English" }, "category_ids": [ 4 ], "tags": [ "adultromance", "adultthemes" ], "created_at": "2025-06-06T19:29:33Z", "modified_at": "2025-06-28T15:59:35Z" } ], "total": 9, "limit": 2, "offset": 0, "next_offset": 2 } } ```
MCP tool wattpad_user_stories
Related APIs
Media & Streaming
Follow German football from the Bundesliga down to the lowest Kreisklasse. Discover competitions in all 22 federations, then read matchdays, standings, scorers, clubs, teams, and players from the DFB's own amateur-football portal.
Media & Streaming
Browse Sportskeeda's sports and entertainment coverage, community wikis, quizzes, and fan games with the catalog's current slugs and filter limits.
Media & Streaming
Research streaming catalogs, title availability, providers, offers, seasons, episodes, and release changes from JustWatch with normalized JSON.
How to scrape Wattpad
Crawlora's 11 Wattpad endpoints cover public story and author discovery, chapter pacing, recommendations and chapter comments. On 2026-10-27, /wattpad/categories listed 22 categories and /wattpad/languages listed 50 languages, both with gaps in their id sequences, and a hot English Werewolf browse reported 1,500 stories, which is the browse ceiling and not a real count. A 90-chapter story's chapter list showed readers dropping from 25,447 reads on chapter 1 to 15,202 on chapter 2. The documented surface is anonymous and public; private account or paid-access content is not promised.
/wattpad/categories returned 22 rows with ids 1 to 24 but no 15 or 20 (for example Romance is 4, Werewolf 22, Vampire 18). /wattpad/languages returned 50 rows with ids up to 53 and no 31, 45 or 52; English is 1 and Other is 11. Pass those ids to /wattpad/search rather than assuming a sequence.
A search by category, language and ranking (hot, new or featured) with no query text reported a total of 1,500 and ran with next_offset paging; the route's own limit is an offset below 1,500 without a query and below 10,000 with one. Treat 1,500 as a cap and add a query term or a narrower category to go deeper.
/wattpad/story-parts lists chapters in reading order with reads, votes, comments and word count. Moon's Rejected Queen, 90 chapters, started at 25,447 reads on chapter 1, fell to 15,202 on chapter 2 (about 40 percent), then to 12,479 on chapter 10, 9,958 on chapter 25, 6,699 on chapter 50, 2,761 on chapter 75 and 1,776 on chapter 89, before the final chapter reached 3,651 with 29 comments.
created_at is not reading order: chapter 3 was created 2026-01-23 while chapter 2 was created 2026-01-31. Use the order of the story-parts list, and treat length and word_count as different measures (chapter 1 reported length 5,650 and word_count 1,130; word counts ran from 982 to 3,064 across the 90 chapters).
Pass a part id from story-parts to /wattpad/part-comments and page with limit and offset. Chapter-level comments are the signal for where readers react: chapter 37 of that story drew 68 comments against 3 on chapter 79.
Use /wattpad/search-users to find an author, /wattpad/user and /wattpad/user-stories for the public profile and works, and /wattpad/story-recommendations with a story id for related stories.
FAQ
That is the offset ceiling for searches without a query. The hot English Werewolf browse on 2026-10-27 reported exactly 1,500, so the number describes the cap, not the size of the category.
Treat them as separate counters. Moon's Rejected Queen showed 668,945 story reads while its first chapter showed 25,447. Compute retention from chapter reads only.
It is a language id (11) in the directory, alongside 49 named languages, so filtering by it returns stories the author did not assign to a named language.
Call /wattpad/story-parts for the story's chapter IDs, then pass a returned part_id to /wattpad/part-comments and use limit and offset for pagination.
The catalog documents anonymous public discovery and story metadata. It does not promise private account data or paid-access content.