Royal Road Scraper
Pricing
from $3.00 / 1,000 results
Royal Road Scraper
Scrape Royal Road - the leading platform for serialized web fiction (progression fantasy, LitRPG, GameLit). Browse curated lists, search by genre/tag/status, fetch full fiction details with chapter lists, or list an author's fictions. No login required.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Scrape Royal Road — the leading platform for serialized web fiction (progression fantasy, LitRPG, GameLit, portal fantasy, and more). Browse any of Royal Road's 9 curated fiction lists, run advanced search with genre/tag/status/rating filters, fetch full fiction details with the complete chapter list, or pull every fiction published by a specific author. HTTP-only and fully public — no login, no cookies, no API key, and no proxy required.
What this actor does
- Four modes:
browse(curated lists),search(advanced filters),fictionDetail(full detail + chapter list by URL/ID),byAuthor(all fictions by an author) - 9 curated lists: Best Rated, Trending, Ongoing Fictions, Complete, Popular This Week, Latest Updates, Newest, Rising Stars, Writathon — plus genre-specific Rising Stars rankings (~50 fictions per genre)
- Full filter set: 16 genres, 72 secondary tags, 6 content warnings, status, fiction type, page-count range, rating range, 10 sort orders
- Chapter lists: every chapter's title, URL, publish date, and free/premium flag (chapter body text is not included — see FAQ)
- Empty fields are omitted — a record never contains
null,"", or[]
Output per fiction
Always present: fictionId, title, sourceUrl, recordType: "fiction", scrapedAt
Present when available (browse / search / byAuthor):
slug,coverUrlfictionType(Original/Fan Fiction),status(ONGOING/COMPLETED/HIATUS/STUB/DROPPED/INACTIVE)genres[],tags[],contentWarnings[]followers,rating(0–5),pages,views,chapterCount,lastUpdated,description
Present when available (fictionDetail — full record):
authorName,authorId,authorUrloverallScore,styleScore,storyScore,grammarScore,characterScore(each 0–5)totalViews,averageViews,followers,favorites,ratingsCount,pages,wordCountlanguage(e.g.en-US),publishedAt(original publish date),lastUpdated(last chapter date),isFree(whether the fiction is currently fully free to read)chapterCount,firstChapterUrlchapters[]— each withchapterId,title,url,order,publishedAt,isFree
Present when available (byAuthor):
authorId,authorUrl,authorName,authorAvatarUrlattached to every fiction recordauthorJoinedAt,authorLastActive— from the author's public profile pageauthorGender,authorLocation,authorBio— only when the author has filled these in on their public profileauthorFollowsCount,authorFavoritesCount,authorReviewsCount,authorFictionsCount— the author's own public activity counters
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | browse | browse / search / fictionDetail / byAuthor |
listType | string | bestRated | Curated list to scrape (mode=browse) |
risingStarsGenre | string | – | Restrict listType=risingStars to a single genre's ranking (mode=browse) |
searchTitle | string | – | Title contains (mode=search) |
searchKeyword | string | dungeon | Free-text keyword (mode=search) |
searchAuthor | string | – | Author name contains (mode=search) |
genres | array | – | Genre filter, up to 16 values (mode=search) |
tags | array | – | Secondary tag filter, up to 72 values (mode=search) |
contentWarnings | array | – | Content warning filter, up to 6 values (mode=search) |
excludeTags | array | – | Exclude genres/tags/warnings (mode=search) |
status | array | – | Status filter — leave empty for all statuses (mode=search) |
fictionType | string | ALL | ALL / original / fanfiction (mode=search) |
minPages / maxPages | int | – | Estimated printed-book page range, 0–20000 (mode=search) |
minRating / maxRating | number | – | Overall rating range, 0–5 (mode=search) |
orderBy | string | relevance | Sort field (mode=search) |
sortDirection | string | desc | asc / desc (mode=search) |
fictionUrls | array | – | Fiction URLs or numeric IDs (mode=fictionDetail) |
authorUrls | array | – | Author profile URLs or numeric IDs (mode=byAuthor) |
maxItems | int | 25 | Hard cap on emitted records (1–1000) |
proxy | object | AUTO | Apify proxy (datacenter AUTO group); used only as an automatic fallback if requests start getting blocked |
Example: browse the Rising Stars list
{"mode": "browse","listType": "risingStars","maxItems": 50}
Example: genre-specific Rising Stars (LitRPG-adjacent Fantasy)
{"mode": "browse","listType": "risingStars","risingStarsGenre": "fantasy","maxItems": 50}
Example: search for ongoing LitRPG with a high rating
{"mode": "search","genres": ["fantasy"],"tags": ["litrpg", "progression"],"status": ["ONGOING"],"minRating": 4.0,"maxItems": 50}
Example: full detail + chapter list for specific fictions
{"mode": "fictionDetail","fictionUrls": ["https://www.royalroad.com/fiction/21220/mother-of-learning","76354"]}
Example: every fiction by an author
{"mode": "byAuthor","authorUrls": ["https://www.royalroad.com/profile/100374"]}
Use cases
- Reader discovery tools — build recommendation feeds from Royal Road's curated lists and tag taxonomy
- Market research — track which genres/tags are trending among progression-fantasy and LitRPG readers
- Author analytics — monitor a specific author's catalog, ratings, and update cadence
- Content aggregators — mirror fiction metadata (title, description, chapter list, cover art) for a directory site
- Competitive intelligence for indie publishing — benchmark word counts, follower counts, and ratings across a genre
FAQ
What is the data source? The public royalroad.com website. No API key, login, or cookies are required — all data comes from publicly viewable pages.
Is chapter body text included? No. This actor returns chapter metadata only (title, URL, publish date, free/premium flag). Fetching full chapter text is a much heavier scrape and out of scope for this actor.
Are "related/recommended fictions" included on fictionDetail?
No. Royal Road renders its recommendations widget via a client-side AJAX call after page load (<div id="recommendations"> is empty in the raw HTML) — it isn't present in the static page this actor fetches, so it can't be reliably scraped without a full browser. Everything else on the fiction detail page (stats, scores, tags, chapters, JSON-LD dates/language) is present in the static HTML and is fully covered.
What's the difference between genres and tags?
Royal Road treats "genres" (16 broad categories like Fantasy, Sci-fi, Romance) as a subset of its full tag vocabulary. "Tags" here covers the other ~72 more specific descriptors (LitRPG, Dungeon Core, Time Loop, etc.). Both are searchable the same way on Royal Road; this actor separates them into two dropdowns purely for a cleaner input UI.
Why do Trending and Rising Stars cap around 50 results even with a higher maxItems?
Those two lists are fixed-size algorithmic rankings on Royal Road itself (no further pages exist) — this is a genuine source limitation, not an actor bug. Every other list (Best Rated, Complete, Latest Updates, etc.) paginates fully.
What is risingStarsGenre?
Royal Road publishes a separate Rising Stars ranking (~50 fictions) for each of its 16 genres, in addition to the overall cross-genre list. Set listType=risingStars and pick a risingStarsGenre to fetch a genre-specific ranking instead of the overall one.
Why is Writathon sometimes empty?
It's a seasonal event list tied to Royal Road's periodic writing challenges. Outside an active event window it may return zero results.
Why is contentWarnings almost always empty in the output, even when I filter by it?
The contentWarnings search filter genuinely works server-side — filtering by e.g. "Graphic Violence" returns only fictions Royal Road has flagged with that warning. However, Royal Road does not render content-warning tags as visible links on its fiction listing cards or detail pages (unlike genres and regular tags, which are always shown) — this is how Royal Road's own site is built, not a limitation of this actor. The contentWarnings output field will populate only on the rare fiction where Royal Road happens to also show it as a regular tag.
Are ratings out of 5?
Yes — rating (listing pages) and overallScore/styleScore/storyScore/grammarScore/characterScore (fiction detail) are all on Royal Road's native 0–5 scale.
Is this affiliated with Royal Road? No. This is an independent third-party actor that reads Royal Road's public pages.
Does this actor need a proxy? No — it works from Apify's standard datacenter IPs. A proxy field is exposed only as an automatic fallback if Royal Road ever starts rate-limiting a specific run.