DLsite APIdlsite.com ↗
Access DLsite's digital content catalog via API. Fetch product details, search by keyword, get new releases, and retrieve ranked lists with pricing and ratings.
What is the DLsite API?
The DLsite API provides 4 endpoints covering product details, keyword search, new releases, and ranked lists from DLsite's Japanese digital content marketplace. The get_product_details endpoint returns 10 fields per product including JPY and USD pricing, average rating, discount rate, and circle/maker identity — all by a single product ID like RJ01551365 or VJ01005806.
curl -X GET 'https://api.parse.bot/scraper/f47df3c1-0388-498d-b2c0-34f45c5478a3/get_product_details?product_id=RJ01644019' \ -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 dlsite-com-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: DLsite SDK — search, rank, drill into details."""
from parse_apis.dlsite_api import DLsite, SiteSection, RankingTerm, Locale, ProductNotFound
dlsite = DLsite()
# Search for ASMR products in the home section
for product in dlsite.products.search(keyword="ASMR", site_section=SiteSection.HOME, limit=5):
print(product.product_id, product.title, product.price, product.rating)
# Get weekly rankings
for ranked in dlsite.products.ranking(term=RankingTerm.WEEK, site_section=SiteSection.HOME, limit=5):
print(ranked.product_id, ranked.title, ranked.price)
# Drill into details from a search result
item = dlsite.products.search(keyword="RPG", limit=1).first()
if item:
detail = item.details()
print(detail.title, detail.price_jpy, detail.rating_average, detail.circle_name)
# Browse new releases with Japanese locale
for release in dlsite.products.new_releases(locale=Locale.JA_JP, period=3, limit=3):
print(release.product_id, release.title, release.circle_id)
# Typed error handling for a missing product
try:
missing = dlsite.products.get(product_id="RJ99999999")
print(missing.title)
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
print("exercised: products.search / products.ranking / ProductSummary.details / products.new_releases / products.get")
Fetch full product details for a single DLsite product by its ID. Searches across all site sections to locate the product. Returns title, circle/maker info, pricing in JPY and USD, ratings, sale status, and metadata.
| Param | Type | Description |
|---|---|---|
| product_idrequired | string | DLsite product ID in the format RJ/VJ/BJ followed by digits (e.g. RJ01551365, VJ01005806). |
{
"type": "object",
"fields": {
"title": "string, product title",
"on_sale": "integer, 1 if on sale, 0 otherwise",
"circle_id": "string, circle/maker ID",
"price_jpy": "integer, price in JPY",
"price_usd": "number, price in USD",
"product_id": "string, the product ID",
"circle_name": "string, name of the creator circle",
"rating_count": "integer, number of ratings",
"discount_rate": "integer or null, discount percentage",
"rating_average": "number, average rating out of 5"
},
"sample": {
"data": {
"title": "Sample ASMR Product",
"on_sale": 1,
"circle_id": "RG01028745",
"price_jpy": 1650,
"price_usd": 10.29,
"product_id": "RJ01551365",
"circle_name": "BrownDust2",
"rating_count": 154,
"discount_rate": null,
"rating_average": 4.92
},
"status": "success"
}
}About the DLsite API
Product Lookup and Search
The get_product_details endpoint accepts a single product_id in formats like RJ, VJ, or BJ followed by digits, and returns fields including title, circle_name, circle_id, price_jpy, price_usd, rating_average, rating_count, discount_rate, and on_sale status. This covers products across all DLsite site sections without requiring you to specify which section the product belongs to.
The search_products endpoint accepts a keyword string (e.g. "ASMR", "visual novel", "RPG") and an optional site_section parameter — one of home, maniax, soft, pro, or girls — to scope results. Responses are paginated at up to 30 items per page, controlled by the page parameter. Each item in the items array includes product_id, title, price, rating, and circle_id.
New Releases and Rankings
The get_new_releases endpoint returns recently published products enriched with tags, maker info, and sample images. The locale parameter (e.g. en-us, ja-jp) controls localization of the returned data, and a period parameter in days lets you narrow the date range. The response wraps results in a data object containing a products array and an information object that includes the date range the results cover.
The get_ranking endpoint returns ranked product lists filterable by term (day, week, month, total) and site_section. Each entry in the items array includes product_id, title, price, and rating, giving a ranked snapshot of what is selling or trending within any given section of the catalog.
The DLsite API is a managed, monitored endpoint for dlsite.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dlsite.com 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 dlsite.com 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?+
- Track price drops and sale status on DLsite products using the
on_saleanddiscount_ratefields fromget_product_details. - Build a doujin game discovery feed by polling
get_new_releasesdaily with a shortperiodvalue. - Surface trending ASMR or RPG titles by querying
get_rankingwithterm=weekand the relevantsite_section. - Aggregate circle/maker catalogs by extracting
circle_idandcircle_namefrom search results and product lookups. - Monitor rating momentum by comparing
rating_averageandrating_countacross periodic snapshots of a product. - Localize a DLsite content directory by using the
localeparameter inget_new_releasesto retrieve Japanese or English metadata. - Power a recommendation engine by querying
search_productswith genre keywords and ranking returned items byratingfield.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does DLsite have an official developer API?+
What does `get_product_details` return, and how do I identify the right product ID format?+
How does pagination work in `search_products`, and what is the maximum items per page?+
page parameter controls which page of results is returned. Each page returns up to 30 items. If a search produces more than 30 matches, increment page to retrieve subsequent pages. The response includes a count field indicating how many items are on the current page.Does the API expose user review text or individual review comments?+
rating_average and rating_count — but not individual review bodies or user-written comments. You can fork this API on Parse and revise it to add an endpoint that retrieves per-review text for a given product.Are there any data gaps for certain site sections or product types?+
site_section parameter across search_products, get_new_releases, and get_ranking covers home, maniax, soft, pro, and girls sections. Creator profile pages, bundle deals, and user wishlist or library data are not exposed by the current endpoints. You can fork this API on Parse and revise it to add endpoints targeting those data areas.