doreq Naver data
Naver data infrastructure

Naver Shopping data, delivered at production volume.

DoReq is a specialist data partner for teams that depend on Naver. We run managed, high-throughput access to Smart Store, Brand Store and Naver Shopping search, and we fit the capacity, endpoints and delivery to your workload.

Engagements are scoped individually. Built for sustained, high-volume workloads.

POST /fetch · xhr200 · application/json
# Product JSON from a Smart Store channel
curl -X POST "$DOREQ_ENDPOINT/fetch" \
  -H "Authorization: Basic $DOREQ_AUTH" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://smartstore.naver.com/i/v2/channels/…/products/82624…",
    "referer": "https://smartstore.naver.com/…/products/82624…"
  }'
responseX-Cache: MISS
{
  "id": 8262405456,
  "name": "…",
  "salePrice": 12900,
  "discountedSalePrice": 11610,
  "stockQuantity": 120,
  "productStatusType": "SALE",
  "optionCombinations": [ … ]
}
Coverage
  • smartstore.naver.com
  • brand.naver.com
  • search.shopping.naver.com
  • shopping.naver.com
Why teams choose DoReq

One platform, fully focused on Naver.

We don't resell a generic scraping API. We work only on Naver, and each client engagement is set up around the actual workload: the URLs, the volume and the freshness it needs.

Capacity planned for you

Throughput is sized to your daily volume and peak windows before go-live. You won't find the limit in production.

Raw Naver responses

You get Naver's own JSON and HTML, unchanged, so your existing parsers keep working and no field is lost to someone else's schema.

We absorb Naver's changes

When Naver changes its storefronts, APIs or defences, we adapt the access layer. Your integration stays the same.

Custom endpoints

Need a Naver surface we don't list yet? We scope it and build it as part of your engagement.

Caching and de-duplication

Recent results are cached, and identical concurrent requests are merged into one. You pay for data, not for repeat requests.

Direct engineering contact

You work directly with the engineers who run the platform, not a ticket queue.

Data products

The Naver data your team actually uses.

Every product returns Naver's native payload for the URL you request.

Product detail

Full product records from Smart Store and Brand Store channels.

  • Price & discounts
  • Stock
  • Options
  • Images
  • Seller

Storefront pages

Rendered product pages with the embedded preloaded state, for availability and listing checks.

  • Live / removed
  • Preloaded state
  • Brand & Smart Store

Benefits & promotions

Product-level and category-level benefits, points and promotional pricing.

  • Benefits by product
  • Points
  • Coupons

Shopping search

Naver Shopping search results for any query, category, price range and sort.

  • Keyword
  • Category
  • Paging
  • Filters
How we work

From scoping to production, in three steps.

01 — Scope

Workload review

Share your target surfaces, sample URLs, expected daily volume and freshness needs. We confirm coverage and send a proposal.

02 — Pilot

Test with real traffic

You get provisioned access and run your real workload against it. We check success rates and latency against your requirements together.

03 — Production

Dedicated capacity

We reserve capacity for your volume on agreed terms. We monitor it on our side, and you have a direct line to our engineers.

API reference

Plain HTTP. Native Naver payloads.

Every endpoint takes the Naver URL you would request yourself and returns Naver's response unchanged. No SDK required.

Access
Provisioned per client during onboarding. Your endpoint and credentials are issued with your pilot. Send them on every request as Authorization: Basic $DOREQ_AUTH.
Format
Requests take JSON or query parameters. Responses are Naver's native JSON or HTML.
Timeouts
Calls are synchronous. Most complete in 2–30 s. Set client timeouts to 90 s or more.
Caching
Results are cached for about 30 minutes per URL. The X-Cache: HIT | MISS header shows whether a result came from cache.
POST

Check: storefront product page

/fetch

Returns the full rendered storefront page for a Smart Store or Brand Store product URL. The page includes window.__PRELOADED_STATE__ with the product JSON. Use it to check whether a listing is live and to read its current state.

FieldDescription
urlrequiredStorefront product URL, e.g. https://smartstore.naver.com/{store}/products/{id}
request
curl -X POST "$DOREQ_ENDPOINT/fetch" \
  -H "Authorization: Basic $DOREQ_AUTH" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://smartstore.naver.com/herapc/products/11884190878"}'
200 · text/html; charset=utf-8
<!DOCTYPE html><html lang="ko"><head>…</head><body>…
<script>window.__PRELOADED_STATE__={"product":{"A":{"id":"11884190878","name":"…","salePrice":…}},…}</script>…
  • 404The product doesn't exist or was removed. This is a definitive answer, not an error.
POST

XHR: product channels JSON

/fetch

Fetches Naver's internal channels product API, the same JSON the storefront loads in the browser. Send the channels API URL together with the storefront page as the referer.

FieldDescription
urlrequiredChannels API URL, e.g. …/i/v2/channels/{channelId}/products/{id}?withWindow=false
refererrequiredThe storefront product page the call originates from. referrer is accepted as an alias.
One endpoint, two modes. /fetch chooses check or xhr from the URL you send. A storefront page URL returns HTML. A channels API URL (/v1/ or /v2/) with a referer returns JSON.
request · smartstore
curl -X POST "$DOREQ_ENDPOINT/fetch" \
  -H "Authorization: Basic $DOREQ_AUTH" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://smartstore.naver.com/i/v2/channels/2sWDwXzu7IwobcaA6L2Rf/products/8262405456?withWindow=false",
    "referer": "https://smartstore.naver.com/jeonbukdistribution/products/8262405456"
  }'
request · brand store
curl -X POST "$DOREQ_ENDPOINT/fetch" \
  -H "Authorization: Basic $DOREQ_AUTH" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://brand.naver.com/n/v2/channels/{channelId}/products/{id}?withWindow=false",
    "referer": "https://brand.naver.com/{store}/products/{id}"
  }'
200 · application/jsontrimmed
{
  "id": 8262405456,
  "name": "…",
  "salePrice": 12900,
  "discountedSalePrice": 11610,
  "stockQuantity": 120,
  "productStatusType": "SALE",
  "channel": { "channelNo": "…", "channelName": "…" },
  "optionCombinations": [ … ],
  "productImages": [ { "url": "https://…" } ]
}
  • 404/ 204 The product doesn't exist or has no content. This is definitive, not an error.
GET

Products & benefits by product

/v1/naver/products

Returns product details or category benefits from Smart Store and Brand Store channel URLs.

ParameterDescription
urlrequiredChannels URL: …/products/{id} or …/benefits/by-products/{id}
refererrequiredThe storefront product page
request · product detail
curl -G "$DOREQ_ENDPOINT/v1/naver/products" \
  -H "Authorization: Basic $DOREQ_AUTH" \
  --data-urlencode "url=https://smartstore.naver.com/i/v2/channels/2sWDvOMJt8KO2RJAoa750/products/294040523?withWindow=false" \
  --data-urlencode "referer=https://smartstore.naver.com/seragio/products/294040523"
request · benefits by product
curl -G "$DOREQ_ENDPOINT/v1/naver/products" \
  -H "Authorization: Basic $DOREQ_AUTH" \
  --data-urlencode "url=https://brand.naver.com/n/v2/channels/2sWDvfJXl0MkfnLYNaaXS/benefits/by-products/4685898105?withWindow=false" \
  --data-urlencode "referer=https://brand.naver.com/drbrian/products/4685898105"
POST

Product benefits

/v1/naver/product-benefits

Resolves product-level benefits (points, discounts, review rewards) for a product. Naver expects the product context in the request body. Pass it through as naver_body.

FieldDescription
urlrequiredChannels product-benefits/{id} URL
refererrequiredThe storefront product page
naver_bodyrequiredProduct context object sent to Naver (product, merchantNo)
request · trimmed
curl -X POST "$DOREQ_ENDPOINT/v1/naver/product-benefits" \
  -H "Authorization: Basic $DOREQ_AUTH" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://smartstore.naver.com/i/v2/channels/2sWDxmRmJ9IzV2aGPs1lp/product-benefits/11867695881",
    "referer": "https://smartstore.naver.com/opi/products/11867695881",
    "naver_body": {
      "product": {
        "id": "11867695881",
        "salePrice": 17500,
        "benefitsView": { "discountedSalePrice": 17500, "managerPurchasePoint": 175 },
        "channel": { "accountNo": 100342204, "channelNo": "100378486", "naverPaySellerNo": "510352100" },
        "category": { "categoryId": "50000402", "wholeCategoryId": "50000002>50000196>50000402" }
      },
      "merchantNo": "510352100"
    }
  }'

Errors & retries

Errors return a short plain-text message. When Naver itself returns an error, its status and body are passed through unchanged.

StatusMeaning
400Invalid request: missing url or malformed JSON
404The product doesn't exist or was removed (a definitive result)
429Capacity reached. Back off and retry
502Upstream unavailable
503Service temporarily unavailable. Retry later
Retry policy. Retry 429 and 5xx with exponential backoff (2 s, 4 s, 8 s…), and stop after a few attempts on the same URL. Tight retry loops don't help, because identical concurrent requests are merged into one. For sustained volume, we reserve capacity for you so that 429 stays the exception.
Engagement

Pricing built around your volume.

We don't publish a rate card. Every engagement is priced on committed volume, the surfaces it covers and its freshness needs, so high-volume clients don't pay retail rates.

  • Volume-based pricing: the more you commit, the lower your per-request rate.
  • Reserved capacity, sized to your peak traffic.
  • Custom endpoints for Naver surfaces not listed here.
  • Invoicing by card or wire transfer.
  • A direct channel to the engineers who run your integration.

Start with a workload review

Tell us about your workload. We usually reply within one business day with coverage confirmation and next steps.

  1. The Naver surfaces you need (product, storefront, benefits, search)
  2. Expected requests per day and your peak windows
  3. Required freshness and latency
  4. A few sample URLs