Royal Road Scraper avatar

Royal Road Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Royal Road Scraper

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

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

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, coverUrl
  • fictionType (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, authorUrl
  • overallScore, styleScore, storyScore, grammarScore, characterScore (each 0–5)
  • totalViews, averageViews, followers, favorites, ratingsCount, pages, wordCount
  • language (e.g. en-US), publishedAt (original publish date), lastUpdated (last chapter date), isFree (whether the fiction is currently fully free to read)
  • chapterCount, firstChapterUrl
  • chapters[] — each with chapterId, title, url, order, publishedAt, isFree

Present when available (byAuthor):

  • authorId, authorUrl, authorName, authorAvatarUrl attached to every fiction record
  • authorJoinedAt, authorLastActive — from the author's public profile page
  • authorGender, authorLocation, authorBio — only when the author has filled these in on their public profile
  • authorFollowsCount, authorFavoritesCount, authorReviewsCount, authorFictionsCount — the author's own public activity counters

Input

FieldTypeDefaultDescription
modestringbrowsebrowse / search / fictionDetail / byAuthor
listTypestringbestRatedCurated list to scrape (mode=browse)
risingStarsGenrestringRestrict listType=risingStars to a single genre's ranking (mode=browse)
searchTitlestringTitle contains (mode=search)
searchKeywordstringdungeonFree-text keyword (mode=search)
searchAuthorstringAuthor name contains (mode=search)
genresarrayGenre filter, up to 16 values (mode=search)
tagsarraySecondary tag filter, up to 72 values (mode=search)
contentWarningsarrayContent warning filter, up to 6 values (mode=search)
excludeTagsarrayExclude genres/tags/warnings (mode=search)
statusarrayStatus filter — leave empty for all statuses (mode=search)
fictionTypestringALLALL / original / fanfiction (mode=search)
minPages / maxPagesintEstimated printed-book page range, 0–20000 (mode=search)
minRating / maxRatingnumberOverall rating range, 0–5 (mode=search)
orderBystringrelevanceSort field (mode=search)
sortDirectionstringdescasc / desc (mode=search)
fictionUrlsarrayFiction URLs or numeric IDs (mode=fictionDetail)
authorUrlsarrayAuthor profile URLs or numeric IDs (mode=byAuthor)
maxItemsint25Hard cap on emitted records (1–1000)
proxyobjectAUTOApify 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.