Pinovel APIpinovel.net ↗
Search and browse visual novels from Pinovel.net. Filter by shop, platform, and language. Returns paginated results with titles, metadata, and availability.
What is the Pinovel API?
The Pinovel API provides one endpoint — search_visual_novels — that returns paginated lists of visual novel titles from pinovel.net, each page delivering up to 25 results. You can query by keyword or browse the full catalog using filters for shop (Steam, itch.io, GOG, Patreon, DLsite), platform (Windows, Linux, Mac, Android, iOS, web), and language (English, Japanese, Chinese, Korean, Russian, and more).
curl -X GET 'https://api.parse.bot/scraper/aa7e438a-e531-4963-8cf2-0ba263f837a8/search_visual_novels?query=romance&sort_by=released&sort_order=desc' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace pinovel-net-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Pinovel SDK — search and browse visual novels."""
from parse_apis.pinovel_net_api import Pinovel, SortBy, SortOrder, InputFormatInvalid
client = Pinovel()
# Browse recently released visual novels, capped at 10 results.
for vn in client.visual_novels.search(sort_by=SortBy.RELEASED, sort_order=SortOrder.DESC, limit=10):
print(vn.title, vn.released)
# Search for a specific keyword and drill into the first result.
hit = client.visual_novels.search(query="romance", limit=1).first()
if hit is not None:
print(hit.id, hit.title, hit.has_ero, hit.cover_url)
# Filter by platform and shop together.
for vn in client.visual_novels.search(platforms="win", shops="steam", limit=5):
print(vn.title, vn.dev_status)
# Demonstrate typed error handling for invalid input.
try:
client.visual_novels.search(sort_by="invalid_field", limit=1).first()
except InputFormatInvalid as e:
print(f"Caught expected error: {e.message}")
print("exercised: visual_novels.search (browse / keyword / filtered / error)")
Search for visual novels by keyword. Returns paginated results (25 per page) sorted by release date or title. Supports filtering by shop, platform, and language. When query is empty, returns all visual novels matching the filters.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-indexed). Each page returns up to 25 results. |
| query | string | Search keyword to find visual novels by title. Omitting returns all visual novels matching other filters. |
| shops | string | Comma-separated list of shop filters (e.g. 'steam,itch,gog'). Available shops: steam, patreon, itch, gog, dlsite, dlsoft, getchu. |
| sort_by | string | Field to sort results by. |
| languages | string | Comma-separated list of language filters (e.g. 'en,ja'). Common values: en, ru, ja, zh-Hans, zh-Hant, zh, ko, es, fr, de, it, pt-br, vi. |
| platforms | string | Comma-separated list of platform filters (e.g. 'win,lin'). Available platforms: win, web, lin, mac, and, ios, swi, ps4, ps5, psv. |
| sort_order | string | Sort direction. |
{
"type": "object",
"fields": {
"page": "Current page number",
"query": "The search query that was used",
"results": "Array of visual novel objects",
"has_next_page": "Whether more results are available on the next page"
},
"sample": {
"data": {
"page": 1,
"query": "romance",
"results": [
{
"id": 65240,
"title": "Arcana Romance 2",
"has_ero": false,
"released": "TBA",
"alt_title": null,
"cover_url": "https://t.vndb.org/cv/70/133970.jpg",
"cover_nsfw": false,
"dev_status": 1
},
{
"id": 43288,
"title": "TOUCHSTARVED",
"has_ero": false,
"released": "TBA",
"alt_title": null,
"cover_url": "https://t.vndb.org/cv/96/78496.jpg",
"cover_nsfw": false,
"dev_status": 1
}
],
"has_next_page": true
},
"status": "success"
}
}About the Pinovel API
What the API Returns
The search_visual_novels endpoint returns an array of visual novel objects under the results field, alongside pagination metadata: page (current page number), has_next_page (boolean indicating whether further pages exist), and query (the search term that was applied). Each page contains up to 25 entries. When query is omitted entirely, the endpoint behaves as a full catalog browser, returning all titles that match any other active filters.
Filtering and Sorting
The endpoint accepts several filter parameters simultaneously. shops accepts a comma-separated list from steam, patreon, itch, gog, and dlsi. platforms accepts values like win, lin, mac, and, ios, and web. languages takes ISO-style codes such as en, ja, zh-Hans, zh-Hant, ko, and ru. Sorting is controlled by sort_by (the field to sort on) and sort_order (the direction). Pagination is 1-indexed via the page parameter.
Practical Notes
All filter parameters are optional and composable. For example, you can search for titles containing a keyword while restricting results to Linux-compatible games sold on Steam with English or Japanese language support. The has_next_page field makes it straightforward to implement sequential crawling across the full result set without guessing total page counts.
The Pinovel API is a managed, monitored endpoint for pinovel.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pinovel.net changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official pinovel.net API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a visual novel discovery tool that filters titles by available shop and target platform
- Aggregate multilingual visual novel catalogs by combining
languagesfilter values likejaandzh-Hans - Track which visual novels are available on itch.io versus GOG using the
shopsfilter - Create a cross-platform compatibility checker by querying with
platforms=win,lin,mac - Paginate through the full pinovel.net catalog to build a local index using
has_next_pagefor sequential traversal - Filter Android and iOS visual novel releases by setting
platforms=and,iosand sorting by release date
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does pinovel.net have an official developer API?+
What does the `search_visual_novels` endpoint return for each visual novel in the results array?+
results. The spec does not enumerate every field inside each object, but results are paginated at 25 per page and filterable by shop, platform, and language. The has_next_page boolean tells you whether additional pages exist.What are the pagination limits, and is there a way to get total result count?+
page and has_next_page but does not currently return a total result count or total page number. To determine the full size of a result set, you would need to paginate until has_next_page is false.Does the API return detailed visual novel data such as descriptions, screenshots, or user ratings?+
Can I filter visual novels by price or release date range?+
sort_by and sort_order. Price ranges and explicit date-range parameters are not exposed. You can fork this API on Parse and revise it to add price or date-range filtering.