DNS API

DNS electronics prices, discounts and stock as JSON

The DNS API turns dns-shop.ru, Russia's largest consumer-electronics retailer, into JSON in two actions.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a DNS endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
D
/dns-shop/v1

2 active endpoints. Every call is 3 credits.

  • POST/dns-shop/v1/search
  • POST/dns-shop/v1/product

What DNS endpoints does ReefAPI ship?

2 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

2 endpoints

search

3 cr

Search DNS by keyword.

required
query
optional
page

product

3 cr

The full DNS record of one product.

required
product_id
optional
—

Every parameter, every allowed value →

DNS API

2 of 2 endpoints, ready to run

View docs ↗

24 products per page with price, was-price, discount, credit instalment, key specs and rating.

3 credits1 required · 1 optional
POST/dns-shop/v1/search
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the DNS API works

DNS is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 549 engines.

02
Call
POST /dns-shop/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
3 credit per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Follow the price of a product on DNS

Two calls, the id taken as it is from the first answer.

01search?query=iphone 15
POSTsearch?query=iphone 15

Rows with product_id, price, price_old and the category DNS answered in.

02product?product_id=<product_id from a row>
POSTproduct?product_id=<product_id from a row>

The record with price, credit, shop count, delivery date and the weekly price history.

Today's Moscow price of a product next to its last six months of weekly prices.

request
curl -X POST https://api.reefapi.com/dns-shop/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"iphone 15"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "dns-shop",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

What one DNS product returns

Real results read on 2026-10-15. The id from a search row was passed as it is to product in both runs and came back as the same product with the same price.

productwhat the page showsprice / price_oldother fields
Apple iPhone 15 128 GB, product57 999 ₽, in stock in 269 shops57999 / nullcredit_monthly 5654 for 12 months, rating 4.83 from 4706 reviews, 24 weekly price points
Xiaomi Robot Vacuum X20+, search row39 999 ₽, struck 46 299 ₽39999 / 46299discount_pct 13.6, rating 4.82, reviews_label 1.4k
MSI GeForce RTX 4070 VENTUS, search rowout of stocknull / nullorderable false, avail_status out_of_stock

price is what DNS shows an anonymous visitor today; price_old is the struck price and is null when nothing is discounted. When the product page's structured data carries a different number, both are returned with a price_mismatch flag instead of one being hidden.

What DNS publishes — measured 2026-10-15

Numbers from two live runs on dns-shop.ru, Moscow.

Field fill (173 rows, 10 searches)

Name, URL, image, rating, key specs and availability status on every row; price on 165 (the other 8 were out of stock); credit instalment on 150; was-price on 7; exact review count on 106 (the rest are rounded labels).

Round trip

A search row's product_id returned the same product, code and price from product in both runs.

Paging

24 products per page; last_page from DNS's own pagination (13 pages for 292 coffee machines); pages do not repeat.

Not published

Prices for cities other than Moscow, prices shown only after signing in, the full specification table (the product card's specification block is returned) and customer review texts.

What people build with DNS

The jobs this data is most often used for.

2

endpoints

3

credits per call

01

Track electronics prices in Russia: product for your SKUs, with price, was-price, credit and the weekly price history.

02

Watch discounts: search a category and keep the rows where price_old is set.

03

Check availability in Moscow: product returns the shop count, pickup line and next delivery date.

04

Compare with marketplaces: the same keyword on DNS, Wildberries and Yandex Market gives a retailer price next to marketplace prices.

What DNS data costs

The cheapest call here is 3 credits, so $15/mo (Pro) buys 3,333 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 549 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/dns-shop/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"iphone 15"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/dns-shop/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "iphone 15"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up DNS.

Get a free key →
Which city are the prices for?▾

Moscow. Every product record carries a city block with the name and id the page itself reported, so a different city can never pass unnoticed. Choosing another city is not offered yet.

Which prices does it return?▾

The current price in rubles (price), the struck was-price (price_old) with the computed discount_pct, and the monthly credit instalment with its number of months. On the product record, ld_price is the price in the page's own structured data; on one product in our sample it differed from the shown price, and both were returned with price_mismatch.

Why do some rows have no price?▾

In our 2026-10-15 runs every row without a price was a product DNS marks out of stock (orderable false), and DNS itself shows no price for those. Discounted ex-display units (markdown) appear in some searches too; they are kept with is_markdown true and no price.

Why is review_count empty on some search rows?▾

Search tiles print a rounded label such as '4.7k отзывов'. reviews_label returns it exactly as printed and review_count is filled only when the label is an exact number. product always returns the exact count (4 706 for the iPhone 15 above).

What does the price history contain?▾

The weekly price points DNS draws on the product page, roughly the last six months: month, week range and price for each point (24 points for the iPhone 15 on 2026-10-15).

How many products does one page return?▾

24 per page. DNS often answers a keyword inside its best-matching category: 'iphone 15' returned 392 smartphones, 'кофемашина' 292 automatic coffee machines over 13 pages. category, category_id, total and last_page are in every response.

How fast is it?▾

Over two identical runs every positive call succeeded. Median time was about 3 seconds for search and 6.7 seconds for a full product record; the first call after a quiet period can take around 14 seconds.

What is the DNS API?▾

DNS API is a ReefAPI endpoint group for russia's largest electronics retailer as json: keyword search with the current ruble price, the was-price and discount, the monthly credit instalment and rating on every product, and full product records with shop count, delivery date, specifications and weekly price history. It returns live JSON through POST requests under /dns-shop/v1.

Is the DNS API free to try?▾

Yes. ReefAPI starts with 1,000 free credits, no card required. DNS calls use the same shared credit balance as every other ReefAPI engine.

Do I need a DNS login or account?▾

No login to DNS is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the DNS data?▾

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the DNS API use?▾

DNS actions currently cost 3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call DNS from an AI assistant or MCP client?▾

Yes. Connect ReefAPI once through MCP and your assistant can call dns-shop actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the DNS API a DNS scraper?▾

It is the managed alternative to a DIY DNS scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same russia's largest electronics retailer as json: keyword search with the current ruble price, the was-price and discount, the monthly credit instalment and rating on every product, and full product records with shop count, delivery date, specifications and weekly price history back as clean JSON.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 548 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-15.