Wattpad Story Scraper avatar

Wattpad Story Scraper

Pricing

from $0.45 / 1,000 stories

Go to Apify Store
Wattpad Story Scraper

Wattpad Story Scraper

Find public Wattpad stories by keyword, tag, or genre without credentials. Get story details, author story lists, chapter lists, or readable chapter text with public filters.

Pricing

from $0.45 / 1,000 stories

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

📚 Find Wattpad stories and chapter text

Story researchers, writers, catalog builders, and data teams can use this Actor to collect public Wattpad stories. It returns story details, author story lists, chapter lists, and readable chapter text so you can compare public stories, study author catalogs, or build your own dataset.

🧾 Wattpad data you can use

Each saved row is a story, author, or chapter shape. Fields may be absent when Wattpad does not provide them. Public author contact emails appear only when they are visible and requested.

Story discovery

Search by keyword, tag, or genre or category. Filter discovery by language, completion, access, maturity, minimum votes, or minimum reads. You can also order stories by relevance, votes, reads, comments, or recent updates.

Story details

Look up a public story by ID or URL. A story row can include its title, description, author, cover, tags, categories, language, status, counts, publication dates, chapter list, and the discovery value that first saved it.

Author story lists

Use a public username to get available author profile details, engagement, and the author’s public story list.

Chapter text

Use a public chapter ID or URL to get readable chapter text with its title, link, word count, publication date, and engagement when available.

▶️ Run one Wattpad task at a time

Choose one target

Each run uses one target: story search by keyword, story search by tag, genre or category browsing, story details, an author story list, or chapter text. Use a separate run for a different task or a different set of settings.

Use public inputs

The Actor reads public Wattpad data. It does not unlock private, login-gated, removed, mature-gated, or paywalled content.

Limit the work

Set maxItems when you want the run to stop after a chosen number of returned items. Leave it empty to return all available results until the source is exhausted. This is a work limit, not a promise of a fixed number of results.

Keep the first discovery match

For story discovery, the first eligible match for a source story is saved at once. Later matches for the same story are ignored. This keeps one saved row for the source story and keeps its first discovery value in discoveryInput.

⚙️ Input

Choose one target for each run. The other fields apply to the targets named in their descriptions.

Input fields

FieldTypeWhat it does
targetstring (select)Chooses keyword search, tag search, genre or category browsing, story details, author stories, or chapter text.
keywordsarray of stringsFinds public stories by one or more words or phrases. Up to 500 keywords.
tagsarray of stringsFinds public stories by one or more Wattpad tags. Up to 500 tags.
genresOrCategoriesarray of stringsBrowses public stories in one or more Wattpad genres or categories. Up to 500 values.
storyIdsOrUrlsarray of stringsGets details for public Wattpad story IDs or URLs, including a public chapter list when available. Up to 500 values.
usernamesarray of stringsGets available public profile details, author engagement, and stories for public Wattpad usernames. Up to 500 usernames.
chapterIdsOrUrlsarray of stringsExtracts readable text from public Wattpad chapter IDs or URLs. Up to 500 values.
languagestring (select)Filters keyword, tag, or genre discovery by a Wattpad language code. Leave empty for all languages.
completionstring (select)Shows only completed or ongoing stories. Leave empty for both.
accessstring (select)Shows only free or paywalled public stories. It does not unlock paid content. Leave empty for both.
maturitystring (select)Filters by the public story maturity label. Mature-gated items are skipped when they are not publicly available. Leave empty for both.
minimumVotesintegerKeeps discovered stories with at least this many votes. Leave empty for no minimum.
minimumReadsintegerKeeps discovered stories with at least this many reads. Leave empty for no minimum.
sortBystring (select)Orders discovered stories by relevance, votes, reads, comments, or recent updates. The recent-updates feed is used for genre or category browsing.
includeAuthorContactEmailsbooleanRequests publicly visible author contact emails and their source context when available. It never bypasses access controls and is ignored for Chapter text.
maxItemsintegerStops after this many returned items. Leave empty to return all available results until the source is exhausted.

Example input

This is the public input from the successful hosted QA default-input run:

{
"target": "searchByKeyword",
"keywords": [
"fantasy"
],
"includeAuthorContactEmails": false,
"maxItems": 25
}

🧾 Output

The default dataset contains one row for each successful public story, author, or chapter task. Fields that are not available from the source are omitted.

Story rows

FieldTypeWhat it does
recordTypestringIdentifies this row as story.
storyIdstringStable public Wattpad story ID.
titlestringPublic story title.
descriptionstringPublic story description.
storyUrlstringCanonical public story URL.
coverUrlstringPublic story cover image URL.
authorobjectPublic author fields when available.
author.usernamestringPublic Wattpad username.
author.displayNamestringPublic author display name.
author.profileUrlstringCanonical public author profile URL.
author.avatarUrlstringPublic author avatar image URL.
author.biostringPublic author biography.
author.locationstringPublic location listed by the author.
author.websiteUrlstringPublic website URL listed by the author.
author.contactEmailstringPublic contact email shown in the author profile when available.
author.contactEmailSourcestringPublic profile context where the contact email was shown.
tagsarray of stringsPublic tags assigned to the story.
categoriesarray of stringsPublic genres or categories assigned to the story.
languagestringLanguage reported for the story.
completionStatusstringWhether the story is completed or ongoing.
maturitystringPublic maturity label for the story.
accessStatusstringWhether the public story is free or paywalled.
wordCountintegerReported story word count.
chapterCountintegerNumber of public chapters reported for the story.
engagementobjectPublic story engagement counts when available.
engagement.votesintegerPublic story vote count.
engagement.readsintegerPublic story read count.
engagement.commentsintegerPublic story comment count.
publicationobjectPublic story publication dates when available.
publication.firstPublishedAtstringFirst publication date and time.
publication.lastPublishedAtstringLast publication or update date and time.
chaptersarray of objectsPublic chapter metadata when available.
chapters[].chapterIdstringStable public chapter ID.
chapters[].titlestringPublic chapter title.
chapters[].chapterUrlstringCanonical public chapter URL.
chapters[].positionintegerChapter position in the story.
chapters[].publishedAtstringChapter publication date and time.
chapters[].wordCountintegerReported chapter word count.
chapters[].accessStatusstringWhether the public chapter is free or paywalled.
chapters[].engagementobjectPublic chapter engagement counts when available.
chapters[].engagement.votesintegerPublic chapter vote count.
chapters[].engagement.readsintegerPublic chapter read count.
chapters[].engagement.commentsintegerPublic chapter comment count.
discoveryInputstringKeyword, tag, or genre value that first caused this story row to be saved.

Example story row

This genuine current-beta row is shortened because the live story contains 38 chapter entries. The shown values are real. Omitted description text and chapter entries are marked with the JSON string "...".

{
"recordType": "story",
"storyId": "305220141",
"title": "Fantasy school with 4w✔️✔️",
"description": "...",
"storyUrl": "https://www.wattpad.com/story/305220141-fantasy-school-with-4w%E2%9C%94%EF%B8%8F%E2%9C%94%EF%B8%8F",
"coverUrl": "https://img.wattpad.com/cover/305220141-256-k565918.jpg",
"author": {
"username": "Snowg716",
"displayName": "Jessica Frost",
"profileUrl": "https://www.wattpad.com/user/Snowg716",
"avatarUrl": "https://img.wattpad.com/useravatar/Snowg716.128.802991.jpg",
"bio": "another account \n@frostjessica6",
"location": "ඩිස්නිලන්තෙ😌"
},
"tags": [
"danny",
"fantasy",
"friendship",
"love",
"magic",
"sinhala",
"sl",
"snake",
"srilanka",
"tiger",
"vampire",
"werewolf",
"wolf",
"සිංහල"
],
"categories": [
"Fantasy"
],
"language": "English",
"completionStatus": "completed",
"maturity": "general",
"accessStatus": "free",
"wordCount": 373426,
"chapterCount": 38,
"engagement": {
"votes": 3564,
"reads": 33480,
"comments": 1285
},
"publication": {
"firstPublishedAt": "2022-03-20T16:42:21Z",
"lastPublishedAt": "2022-07-20T06:08:21Z"
},
"chapters": [
{
"chapterId": "1205608182",
"title": "4W Intro",
"chapterUrl": "https://www.wattpad.com/1205608182-fantasy-school-with-4w%E2%9C%94%EF%B8%8F%E2%9C%94%EF%B8%8F-4w-intro",
"position": 1,
"publishedAt": "2022-03-20T17:16:51Z",
"wordCount": 4576
},
"..."
]
}

Author rows

FieldTypeWhat it does
recordTypestringIdentifies this row as author.
authorobjectPublic author fields when available.
author.usernamestringPublic Wattpad username.
author.displayNamestringPublic author display name.
author.profileUrlstringCanonical public author profile URL.
author.avatarUrlstringPublic author avatar image URL.
author.biostringPublic author biography.
author.locationstringPublic location listed by the author.
author.websiteUrlstringPublic website URL listed by the author.
author.contactEmailstringPublic contact email shown in the author profile when available.
author.contactEmailSourcestringPublic profile context where the contact email was shown.
engagementobjectAggregate public author engagement when available.
engagement.votesintegerAggregate public vote count.
engagement.readsintegerAggregate public read count.
engagement.commentsintegerAggregate public comment count.
storiesarray of objectsStories in the author’s public bibliography.
stories[].storyIdstringStable public story ID.
stories[].titlestringPublic story title.
stories[].descriptionstringPublic story description.
stories[].storyUrlstringCanonical public story URL.
stories[].coverUrlstringPublic story cover image URL.
stories[].tagsarray of stringsPublic story tags.
stories[].categoriesarray of stringsPublic story genres or categories.
stories[].languagestringLanguage reported for the story.
stories[].completionStatusstringWhether the story is completed or ongoing.
stories[].maturitystringPublic maturity label for the story.
stories[].accessStatusstringWhether the public story is free or paywalled.
stories[].wordCountintegerReported story word count.
stories[].chapterCountintegerNumber of public chapters reported for the story.
stories[].engagementobjectPublic story engagement counts when available.
stories[].engagement.votesintegerPublic story vote count.
stories[].engagement.readsintegerPublic story read count.
stories[].engagement.commentsintegerPublic story comment count.
stories[].publicationobjectPublic story publication dates when available.
stories[].publication.firstPublishedAtstringFirst publication date and time.
stories[].publication.lastPublishedAtstringLast publication or update date and time.

Example author row

This genuine current-beta author row includes the public profile and two story entries returned for the selected username.

{
"recordType": "author",
"author": {
"username": "Snowg716",
"profileUrl": "https://www.wattpad.com/user/Snowg716",
"avatarUrl": "https://img.wattpad.com/useravatar/Snowg716.128.802991.jpg",
"bio": "another account \n@frostjessica6",
"location": "ඩිස්නිලන්තෙ😌"
},
"stories": [
{
"storyId": "409460076",
"title": "Reborn Spider lily",
"description": "තමන්ගේ හතුරා තමන්ව මරයි කියන බයට මතකය නෑ වගේ ඉන්න උනොත්...",
"storyUrl": "https://www.wattpad.com/story/409460076-reborn-spider-lily",
"coverUrl": "https://img.wattpad.com/cover/409460076-256-k594132.jpg",
"tags": [
"dark",
"lanka",
"love",
"romance",
"sinhala",
"sl",
"sri",
"srilanka"
],
"categories": [
"Non-Fiction"
],
"language": "English",
"completionStatus": "ongoing",
"maturity": "general",
"wordCount": 16398,
"chapterCount": 2,
"engagement": {
"votes": 7,
"reads": 66,
"comments": 2
},
"publication": {
"firstPublishedAt": "2026-03-27T13:12:30Z",
"lastPublishedAt": "2026-04-09T20:23:12Z"
}
},
{
"storyId": "292265137",
"title": "Miya✔️✔️",
"description": "දෙමව්පියෝ...සහෝදරයෝ විතරන් නෙමේ හොදම යාලුවෝ දෙන්නායි Boy Friend යි හැමෝම එක දවසින් ඔයාව ප්‍රතික්ශේප කරොත්....කොටින්ම කිව්වොත් ඔයාව ගෙදරින් එලියට ඇදලා දැම්මොත්...මොනවා වෙයිද...\n\n\n\n\n\n\n\n\nහායි ☺️❤️ මේ තමා සාමාන්‍ය මිනිස්සු ආශ්‍රයෙන් මම ලියන පලවෙනි පොත...අඩු පාඩු නම් ගොඩක් ඇති....☺️☺️ කියවලා බලන්න ඉතිම්",
"storyUrl": "https://www.wattpad.com/story/292265137-miya%E2%9C%94%EF%B8%8F%E2%9C%94%EF%B8%8F",
"coverUrl": "https://img.wattpad.com/cover/292265137-256-k218882.jpg",
"tags": [
"broken",
"hope",
"love",
"sinhala",
"sl",
"srilanka",
"සිංහල"
],
"categories": [
"Short Story"
],
"language": "English",
"completionStatus": "completed",
"maturity": "general",
"wordCount": 101536,
"chapterCount": 15,
"engagement": {
"votes": 2994,
"reads": 36193,
"comments": 236
},
"publication": {
"firstPublishedAt": "2021-11-21T08:53:01Z",
"lastPublishedAt": "2021-12-05T14:32:45Z"
}
}
],
"engagement": {
"votes": 34917
}
}

Chapter rows

FieldTypeWhat it does
recordTypestringIdentifies this row as chapter.
chapterIdstringStable public chapter ID.
chapterTitlestringPublic chapter title.
chapterUrlstringCanonical public chapter URL.
storyIdstringStable public story ID that contains the chapter.
storyTitlestringPublic title of the story that contains the chapter.
storyUrlstringCanonical public story URL that contains the chapter.
authorobjectPublic author fields when available.
author.usernamestringPublic Wattpad username.
author.displayNamestringPublic author display name.
author.profileUrlstringCanonical public author profile URL.
author.avatarUrlstringPublic author avatar image URL.
author.biostringPublic author biography.
author.locationstringPublic location listed by the author.
author.websiteUrlstringPublic website URL listed by the author.
author.contactEmailstringPublic contact email shown in the author profile when available.
author.contactEmailSourcestringPublic profile context where the contact email was shown.
positionintegerChapter position in the story.
publishedAtstringChapter publication date and time.
wordCountintegerReported chapter word count.
accessStatusstringWhether the public chapter is free or paywalled.
engagementobjectPublic chapter engagement counts when available.
engagement.votesintegerPublic chapter vote count.
engagement.readsintegerPublic chapter read count.
engagement.commentsintegerPublic chapter comment count.
textstringReadable public chapter text.

Example chapter row

This genuine current-beta row shows the readable public text returned for one chapter.

{
"recordType": "chapter",
"chapterId": "1205608182",
"text": "අපි 4W මුලු ස්කූල් එකේම ප්‍රසිද්ද සෙට් එකක්...\nකෙටියෙන්ම කිව්වොත් මැර කල්ලියක් වගේ....\nඅපි කවුරුත් සාමාන්‍ය අය නම් නෙමෙයි...\nඉමා තමා අපි සෙට් එකෙන් අක්කා...\nඑයා vampire කෙනෙක්...\nපරිවර්තනය උනාම සුදුයි...\nවවුලෙක් උනාමත් සුදුයි....\n😏 අහිම්සකයි වගේ හිටියට ඒම නෑ...\nවැම්පයර්ලා කොහෙද අහින්සක....\nඉමාට තියනවා හොද මොල රාජයෙක්...\nඉගනගන්න නෙමෙයි කූට උපක්‍රම වලට...\nසාමාන්‍යෙන් ටීම් එකක වැඩිමලා ටිකක් රෙස්පෙක්ට් එකට ඉන්නවනේ.... 😂 කියන්න සතුටුයි ඉමාට ඒම එකක් නෑ....\nඑයාගෙ ක්‍රස් එක ඩැනී රෑන්ක්....කවුද දන්නෙ නෑ....ඒත් ඉතිම් ඉමා එයාට ගොඩක් ආසයි....එයා ලගදිම අපේ ෆැන්ටසි ස්කූල් එකට එනවා කියල කටකතාවක් තියනවා...\nima576 😌\nසුසුකියා තමා නමට පොඩි එකා...\nඑයා වුල්ෆියෙක්\nසුදුම සුදුයි \nඅර්ද වශයෙන් සහ සම්පූර්නව පරිවර්තනය වෙන්න පුලුවන්\nහී....හුලතල් කියුට් සෝස මල වගේ හිටියට මාර සැරයි...තුන් හතර පාරක් මගෙ බෙල්ල ගලවන්න ගියා...\nකොල්ලො ඇලජික්\nමෙයාගේ හිනාව නිසා ඕන දඩුවමකින් ලිස්සලා යන්න මාර හැකියාවක් තීන්නේ...\nChenuliSathkumara\nජුලියා....ආදරේට ජූලී..\nමැද දෙන්නගෙන් එකෙක්.....\nමෙයා පූසි වගේ හිටියට හෙන සයිස් සුදු කොටි දෙනක්...\nමෙයාට ඉන්නවා සිරියාවන්ත ටුයිනෙක් 😌\nජූලීගේ ක්‍රස් එක නික්....නම විතරයි දම්නේ.....\nජූලී ඇට්ටරයි ....ලගින් ගියොත් ඇහැක් නැති වෙන සීන් එකක් තියෙන්නේ....\nකොටියෙක් වගේ හුරන් කන්න වගේම පූශ් පැටියෙක් වගේ පුරු පුරු ගාන්නත් පුලුවන්...\nනේත\nCalypsoArellano1\nමේ මලක් වගේ දැරිවිය තමා මං😌\nමැද උන් දෙන්නගෙන් එකෙක්...ජූලියාගේ ට්වින් ජෙසිකා...ජෙසී කියල තමා කියන්නේ...\nමන් මලක් වගේ අහින්සකයි.\n😌 වැම්පියෙක් වගේ දතුත් නෑ....\n😌 වෘකයෙක් වගේ ගොරවන්නෙත් නෑ...\n😌 කොටියෙක් වගේ නියපොතුත් නෑ...\nඒකෙන් තේරෙනෝනේ මං ගැන...\nමන් හැපින්නක්....😌 සෙට් එකෙ අහිම්ශකම සතා නේහ්...\nනිකම් හැපින්නක් නෙමේ වෙස් මාරු කරන සුදු හැපින්නක්....\nඅපි තමා 4W (4 white) අපි හැමෝම පරිවර්තනය උනාම සුදුයි\nෆැන්ටසි / මැජික් ස්කූල් එකේ හැදියාව ගෑවිලාවත් නැති කෙල්ලො හතර දෙනා තමා අපි....\n😁 මේක මගේ අලුත් කතාව...\nමුල ඉදන් මා එක්ක හිටිය මගේ අක්කායි නංගියි ට්විනයි තුන්දෙනාගේ චරිත අරන් තමා ලියන්නේ...",
"chapterTitle": "4W Intro",
"chapterUrl": "https://www.wattpad.com/1205608182-fantasy-school-with-4w%E2%9C%94%EF%B8%8F%E2%9C%94%EF%B8%8F-4w-intro",
"publishedAt": "2022-03-20T17:16:51Z",
"wordCount": 916,
"engagement": {
"votes": 156,
"reads": 2592,
"comments": 61
}
}

💳 Pricing

Charged events

EventPriceWhat is saved
Story$0.00045 per saved story rowOne public story with the fields the source provides.
Chapter text$0.0045 FREE tier, $0.00385 BRONZE, $0.0033 SILVER, or $0.0027 GOLD, DIAMOND, and PLATINUMOne public chapter with available text.

The platform applies the tier for your account. These events describe saved public rows. They do not promise a row when the source has no available data.

🔌 Integrations

Video guide

See this video for a walkthrough of the Actor:

❓ FAQ

Do I need a Wattpad account or API key?

No. The Actor uses public Wattpad access and does not need a Wattpad login or API key. It does not bypass private or login-gated pages.

Can I use a story or chapter URL?

Yes. Story details accept public story IDs or URLs, and Chapter text accepts public chapter IDs or URLs.

Can one run use more than one target?

No. Choose one target and its settings for each run. Use separate runs for different tasks or configurations.

What happens to private, removed, mature-gated, or paywalled content?

The Actor does not bypass those controls. An item may be unavailable or omitted when Wattpad does not make it public.

Does a story row include the chapter text?

No. Story rows can include a public chapter list and chapter metadata. Use Chapter text with chapter IDs or URLs for readable text.

Are comment counts and comment text both returned?

Engagement counts may be returned when available. Comment text is not part of the public output schema.

How does duplicate discovery work?

For discovery, the first eligible match for a source story is saved. Later matches for that story are ignored. discoveryInput keeps the first keyword, tag, or genre value that caused the saved story row.

What does an empty work limit do?

Leave maxItems empty to return all available results until the source is exhausted. This does not promise exhaustive coverage of Wattpad.

📝 Changelog

0.0: Initial release

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré