On November 8, 2026, from 00:15 to 00:46 Singapore time, we ran a full sourcing check with three EveryInfra data capabilities. First, we took the top product in 5 categories from Yandex Market in Moscow. Next, we sent each product photo to a 1688 image search. Then we read the 1688 product detail for the SKU price, the minimum order quantity (MOQ) and the weight. Last, we calculated the margin with public Yandex Market fees and the Bank of Russia rate for November 7, 2026.

The result has two sides. The 5 image searches returned 25 candidates, and we checked each photo by eye. 15 were the same product, 6 were similar, and 4 were wrong. Only 2 of the 5 first-ranked results were the same product. The best complete row was a car travel mug at 3,500 rubles (about $42.61) on Yandex Market. The same mug costs 8.17 yuan (about $1.22) on 1688.

After a 50% category fee and the delivery fees, about 1,266 rubles (about $15.41) stays with the seller. That is a 36.2% margin. But 5 sellers list the same mug on Yandex Market, and the lowest price is 1,227 rubles. At that price, the margin is only 19.8%. The data fee for the full check was $0.008334 per product.

Key points

  • Retail prices come only from Yandex Market. EveryInfra does not supply storefront data from Ozon or Wildberries, and a Yandex Market price is not an Ozon or Wildberries price.
  • 5 runs of alibaba1688/image_search returned 25 candidates: 15 same, 6 similar, 4 wrong. Rank 1 was the same product only 2 times, so the agent must check the photos.
  • Travel mug: 3,500 rubles on Yandex Market, 8.17 yuan (about 100 rubles) on 1688, and a 1,266-ruble margin (36.2%) after a 50% category fee. At the lowest price of the same mug, 1,227 rubles, the margin is 19.8%.
  • The Yandex Market category fees for these 5 categories are 44.5% to 50%. The platform fee is more than 10 times the purchase price.
  • 3 data calls per product cost $0.008334. 100 products cost about $0.83. One 6-photo contact sheet costs about 715 vision tokens in Claude.

This article is for sellers in Russia who buy stock in China, and for the developers who build tools for them. It shows how to build a sourcing agent in Claude Code. You give it one product that sells. The agent returns one row with the 1688 price, the MOQ and the freight. The row also shows the money that stays after the Yandex Market fees.

Illustration. On the left, one large frame shows a white round rotating organizer with three gold ball feet. On the right, five small frames sit in a row. The first three show the same organizer with a teal border. The fourth shows a small white clip fan, and the fifth shows a gray grid tray. Both have a gray border that marks a wrong match. A dashed line connects the large photo to the five candidates.

What image search really returns: some candidates are the same product, some only look alike, and some are not related.

The question the agent answers: should you stock this product?

Sellers in Russian-speaking markets often use one method. They start with the marketplace, not with the factory. They find a product that sells in Russia and note its price, rating count and sales. Then they look for the same product on 1688. Last, they calculate the unit economics, which Russian sellers call "юнит-экономика".

Unit economics includes the purchase price, freight, customs and tax, the platform fee, last-mile delivery and returns. Open-source developers already build tools for this work. One GitHub project is a profit calculator for Wildberries sellers that reports unit economics, margin and ROI (wb-calculator). Another project is a Wildberries plugin for Codex and Claude (wildberries-agent-integration). It turns unit economics, break-even and restock planning into tools.

These tools work with data from the seller's own store. They assume that you already have stock and a seller account. Our agent works one step earlier. It uses public data to decide whether a product is worth a first order. That is a different job, and it needs different data.

So the agent takes one Russian keyword, for example "термокружка" (travel mug). It returns one table row with three groups of data. The first group is the Yandex Market title, price and rating count. The second group is the 1688 link, SKU price, MOQ, unit weight and box size of the same product. The third group is the platform fee, the delivery fees, the freight and the margin.

One step in the middle needs a model. The agent must decide whether each image-search candidate is the same product. This step causes the most errors, and a multimodal model is a good fit for it. The live results below show why.

We chose 5 categories that rank high in the Moscow popularity sort on Yandex Market. They are a car travel mug, a rotating cosmetics organizer, a magnetic car phone holder, an astronaut star projector and a city backpack. The mug and the organizer are standard goods with many factories. The phone holder is light and cheap. The star projector has electronics and many design variants. The backpack has many look-alikes with very different specifications.

Flow diagram titled "Five steps per item: 3 data calls, 1 image check, 1 local calculation". Five boxes run from left to right. 1, yandex/market: a Russian keyword gives a price and a main image. 2, alibaba1688/image_search: gives 5 candidates. 3, Claude reads 6 images on 1 sheet and labels them same, similar or wrong. 4, alibaba1688/product_detail: gives SKU price, MOQ and weight. 5, margin.py: fees, exchange rate and freight give a margin table. Steps 1, 2 and 4 are teal, which marks paid data calls. Steps 3 and 5 are gray. A dashed line goes from step 5 back to step 1 with the label "next item".

1688 API and Yandex Market: what each capability does

The fields set the limit of what the agent can calculate, so we start with them. All prices, parameters and fields below come from the free EveryInfra catalog (data catalog). We read it at 00:13 Singapore time on November 8, 2026. You can also read only the 1688 part or the Yandex part. On that day, all four capabilities had available: true.

Each capability page has the full parameter list and examples. Start with the 1688 data API, 1688 image search and 1688 product detail. The other pages are 1688 keyword search, the Yandex data API and Yandex Market product search. For a first key, read the quickstart.

Capability Required parameter Price per call One call returns Fields used in this article
yandex/market keyword $0.001389 20 items by default, up to 100 title, price, currency, rating, rating_count, review_count, purchase_count, shop_name, category, image_url
alibaba1688/image_search image_url $0.005556 up to 5 items rank, title, price, min_order_quantity, order_count, id, image_url
alibaba1688/product_detail url (product link or offerId) $0.001389 1 product price_min, price_max, price_tiers, min_order_quantity, skus (with weight_g, length_cm and more), specs, supplier_type
alibaba1688/search keyword $0.002778 20 items by default, up to 100 price_min, min_order_quantity, order_count

yandex/market has two optional parameters that matter here. city accepts 16 cities, for example Moscow, Saint Petersburg and Kazan. sort accepts only popular and top_rated. The catalog also says that yandex/market and yandex/search use different data. search finds businesses on the map, and market finds products in the store. This note is important, because a model that sees "Yandex" and "price" can easily pick the wrong action.

alibaba1688/image_search costs 4 times as much as the other two calls. Each call searches one photo and returns up to 5 candidates. It does not return full SKU, stock or supplier data, and the catalog says this directly. So image search is a filter. Use it to find candidates. Then call alibaba1688/product_detail for the one candidate that you choose.

The product_detail entry also has a note that is easy to miss. In sync mode, weight, size, stock, province and some other fields can be empty. To get them, use async mode. Our test confirmed this note. It also showed that async mode does not fill every field.

1688 API integration: connect the remote MCP server in Claude Code

The simplest way to give Claude Code external data is a remote MCP server. The Claude Code documentation recommends HTTP for remote MCP servers. The command is claude mcp add --transport http <name> <url>. If the server needs an API key, add it with --header. In .mcp.json, set type to http, because an entry with only url is read as a local stdio server (Claude Code MCP docs). The MCP specification calls this transport Streamable HTTP (MCP transports, 2025-06-18).

A note on method: all Claude Code facts in this article come from the official documentation and the changelog. We did not run the full agent inside Claude Code, so the Claude Code parts are labeled "configuration example". Every data number comes from a live API response and from a script that you can run again on the same files.

# Configuration example: add the EveryInfra remote MCP server to this project (.mcp.json) export EVERYINFRA_API_KEY=... # key from the console, keep it in an environment variable only claude mcp add --transport http everyinfra https://api.everyinfra.com/mcp \ --scope project --header "Authorization: Bearer ${EVERYINFRA_API_KEY}" 

After you connect, tools/list shows 12 tools. We read the list once at 00:37 Singapore time, and this read has no charge. The sourcing agent needs only two tools. everyinfra_call_api calls any data capability with platform, action and params. It also has a mode field that accepts sync or async. everyinfra_get_job reads the result of an async job.

The everyinfra_call_api tool has the annotations readOnlyHint: false and destructiveHint: true, because each call costs money. The MCP specification says that these annotations are hints for the client (MCP tools specification). Claude Code uses them to ask you for permission. For batch runs, allow only these two tools in the project settings (permissions docs, settings docs). Do not allow all MCP tools.

You can also skip MCP and call the REST endpoint POST /api/v1/social with Bash. The charge is the same. With REST, put the request format into a Skill or a prompt (remote MCP setup guide). An earlier article compares the two methods (Claude Code subagents pull TikTok brand accounts).

Step 1: find products that sell on Yandex Market

Step 1 calls yandex/market with a Russian keyword, city: moscow, sort: popular and limit: 10. We ran 5 keywords at 00:15, 00:18 and 00:26 Singapore time. Each call cost $0.001389. Below is the real request for the mug and the main fields of the first item. We removed internal fields such as the balance.

curl -s https://api.everyinfra.com/api/v1/social \ -H "Authorization: Bearer $EVERYINFRA_API_KEY" -H "Content-Type: application/json" \ -d '{"platform":"yandex","action":"market", "params":{"keyword":"термокружка","limit":10,"city":"moscow","sort":"popular"}}' # Response (excerpt, 2026-11-08 00:15:05 Singapore time) # "count": 10, "charged_usd": 0.001389 # {"id":"5953869335","title":"Термокружка (термос) для кофе и чая автомобильная 510 мл кружка-термос", # "price":3500,"currency":"RUR","rating":4.6,"rating_count":349,"review_count":140, # "shop_name":"BASQA","category":"Термокружки дорожные","is_available":true, # "image_url":"https://avatars.mds.yandex.net/get-mpic/18061612/.../orig"} 

The 10 mug items cost from 440 to 4,900 rubles. The top item is a 510 ml car travel mug at 3,500 rubles with 349 ratings. The table shows the product that we chose in each category. For the phone holder and the backpack, we skipped higher items that were brand goods or bundles. Such items are not good for a same-product price check.

Category Keyword (Russian) Chosen item Position Price (RUB) Ratings Purchases
Car travel mug, 510 ml термокружка BASQA 1 3,500 349 null
Rotating cosmetics organizer органайзер для косметики вращающийся ZALUU HOME 1 3,990 419 null
Magnetic car phone holder держатель для телефона в машину магнитный TONG (brand) 7 1,200 5,372 null
Astronaut star projector ночник проектор звездное небо Lo&Ger 1 2,500 106 609
City backpack рюкзак для ноутбука мужской Mozione 6 5,900 105 558

One finding helps with agent design. The purchase_count field had a value for only 2 of the 5 products, the projector and the backpack. All 5 had rating_count. So, to rank products by demand, use the rating count as the main signal. Use the purchase count only when it has a value. The image_url field points to the full-size photo, so you can send it directly to the next step.

Step 2: image search for the same product, and how many of the top 5 match

Step 2 sends the Yandex Market photo URL to alibaba1688/image_search. The mug search returned at 00:16 Singapore time. All 5 candidates were 304 stainless steel car coffee mugs at 7.88 to 11.66 yuan. The organizer search returned at 00:19. All 5 candidates were the same rotating brush organizer at 3.76 to 6 yuan. These two results were very clean, but the other three were not.

For the phone holder, the sync call returned HTTP 503 with the error code timeout at 00:21:25 Singapore time, after a wait of 85 seconds. The response had billing.charged: false and the text "Not charged". It also suggested a retry with "mode":"async". At 00:23:04 we sent the request in async mode and got a job_id at once. At 00:24 the poll returned the result.

Product Sync call Sync result Async submit Async result Charged
Car travel mug 00:16 5 candidates not needed — $0.005556
Cosmetics organizer 00:19 5 candidates not needed — $0.005556
Magnetic phone holder 00:21:25 503 timeout at 85 s 00:23:04 00:24 $0.005556 (sync: $0)
Star projector 00:27:35 503 timeout at 85 s 00:30:16 00:32 $0.005556 (sync: $0)
City backpack 00:29 5 candidates not needed — $0.005556

All times in this table are Singapore time on November 8, 2026. So 2 of 7 image searches timed out in sync mode, and neither had a charge. Each of the two async retries cost $0.005556. For the agent, this means one rule. Use async mode for image search by default.

Screenshot of a real EveryInfra API response. The header shows GET /api/v1/jobs/ with a job ID, alibaba1688/image_search, 2026-11-08 00:24 SGT, charged_usd 0.005556. Below is the JSON with status succeeded and count 5. A teal box marks the first result with the label "rank 1 = desk clip fan · mismatch". Its price is 35 CNY, its MOQ is 5 and its order count is 47. Ranks 2 to 5 are magnetic car phone holders at 6 to 17 CNY. The product titles in the JSON are in Chinese, as 1688 returns them.

Image search for the phone holder: rank 1 is a clip fan, and the same product is rank 3. Captured on November 8, 2026, 00:24 Singapore time. EveryInfra API response screenshot, 2026-11-08 00:24 SGT

The real work starts after the results arrive. For the phone holder, rank 1 was a cartoon clip fan at 35 yuan with an MOQ of 5. Ranks 2 and 4 were magnetic holders with a different vent clip and magnet head. Rank 3 was the same product at 17 yuan with an MOQ of 2. Rank 5 was a separate magnetic ball-head part.

For the projector, rank 1 was an injection-mold shop that offers "robot shell mold making". It has no relation to a projector. Ranks 2 to 5 were all astronaut star projectors. Rank 5 had the same shape as the Yandex Market product: an astronaut that holds a star. Ranks 3 and 4 have "rocket" in the title. But their main photos show the label "white, holds a star" and the same shape, so we labeled them the same.

The backpack was the hardest case. All 5 candidates were backpacks, and none was clearly the same product. The rank 4 photo shows a group of light blue, yellow and pink school bags with side pockets and charms. Only one bag in the group is black. We labeled it wrong.

We wanted one standard for every decision. So we resized the source photo and the 5 candidates to 300×300 pixels. Then we joined them into one 1800×300 contact sheet. "Same" means the same body, shape and parts. "Similar" means the same type of product with a different design or no clear match. "Wrong" means a different type of product.

Product Image-search rank 1 Same in top 5 Similar Wrong 1688 product chosen
Car travel mug, 510 ml Same 5 0 0 Rank 4, about 25,000 sold
Rotating cosmetics organizer Same 5 0 0 Rank 1, 3.76 yuan
Magnetic car phone holder Wrong (clip fan) 1 2 2 Rank 3, 17 yuan, MOQ 2
Astronaut star projector Wrong (mold shop) 4 0 1 Rank 5, star-holding model, 16.21 yuan
City backpack Similar 0 4 1 Rank 3 as a reference only, not the same
Total Same 2 times 15 6 4 Same product found for 4 categories

Horizontal stacked bar chart. Each of 5 products has one bar of 5 candidates, split into same (teal), similar (light gray) and wrong (dark gray). Mug: 5 same. Organizer: 5 same. Phone holder: 1 same, 2 similar, 2 wrong. Projector: 4 same, 1 wrong. Backpack: 4 similar, 1 wrong. Title: 15 of 25 image-search candidates were the same product, but rank 1 was the same only 2 times.

The table shows two facts. First, recall is good. For 4 of 5 categories, the top 5 include the same product, and 60% of all candidates are the same product. Second, the ranking is not reliable. Rank 1 was the same product only 2 times (40%).

An agent that takes rank 1 would calculate 3 of 5 rows wrong. Two of those rows would be very wrong. One would use the price of a 35-yuan fan for a phone holder. The other would use the price of a mold service for a projector. So the photo check is not optional, because it decides whether the numbers are usable.

Step 3: let Claude read the photos, and the token cost

Claude can read images. The Anthropic vision documentation counts images in blocks of 28×28 pixels (vision docs). The token count is the width divided by 28, rounded up, times the height divided by 28, rounded up. Our 1800×300 contact sheet gives 65 × 11 = 715 vision tokens.

Six separate 1000×1000 photos give 6 × 36 × 36 = 7,776 tokens. That is about 11 times the contact sheet. For a sourcing check, a 300×300 thumbnail shows the mug shape, the lid design and the base. A large image adds cost and no new information.

We used the base input prices on the Anthropic pricing page, read at 02:13 Singapore time on November 8, 2026. Haiku 5.5 costs $0.10 per million input tokens when the full prompt is 100,000 tokens or less, and $0.50 above that. So one contact sheet costs about $0.0000715 of input with Haiku 5.5. It costs about $0.00143 with Sonnet 5.5 ($2 per million) and about $0.00286 with Opus 5.5 ($4 per million). The output is 5 labels and one or two sentences, so you can ignore it.

So, even with Opus, the photo check costs about one third of the data fee per product. With Haiku, it costs almost nothing. We still recommend a Sonnet-class model or better for this step. The hard part is not "this is a mug". The hard part is "is this the same lid" or "is this a ball head or a flat head".

In Claude Code, there are two ways to read the photos. The first way is to save the contact sheet in the project folder and open it with the Read tool. The common workflows page says that you can drag an image into the session or give a file path (common workflows docs). The second way is to give the photo check to a subagent. The subagent reads the photos in its own context and sends back only the answer, for example "rank 3 is the same product".

The official docs describe subagents for this case: a side task with a lot of output that you will not need again (subagents docs). You can also give a subagent its own cheaper model to control cost. For batches of 100 products or more, the second way keeps the main session small.

Horizontal bar chart in US dollars of the cost to check one product. Three data calls: yandex/market 0.001389, alibaba1688/image_search 0.005556, alibaba1688/product_detail 0.001389, total 0.008334. Reading one 715-token contact sheet: Haiku 5.5 0.0000715, Sonnet 5.5 0.00143, Opus 5.5 0.00286. Title: about $0.0083 of data per product, and $0.00007 to $0.0029 to read the photos.

Step 4: read the 1688 product detail for the wholesale price and MOQ

After the photo check, call alibaba1688/product_detail for the chosen product. The parameter can be the full product link or the numeric offerId. The mug detail returned at 00:17 Singapore time and cost $0.001389. The most useful part of the response is the skus array. This mug has 38 SKUs for different lids, colors and sizes, from 7.88 to 11.53 yuan.

We chose the SKU that matches the Yandex Market item: standard lid, black, 510 ml. It costs 8.17 yuan, down from 8.5 yuan, and has 97,467 units in stock. The same SKU has a weight of 284 grams and a box size of 9.5 × 9.5 × 18 cm. The supplier is a mug factory in Yongkang, Zhejiang. The MOQ is 1. The product has 24,829 units sold, and the page shows this as "25,000+".

Product SKUs on the page SKU price range (CNY) Chosen SKU price (CNY) MOQ Weight Box size
Car travel mug 38 7.88–11.53 8.17 1 284 g (sync) 9.5 × 9.5 × 18 cm (sync)
Cosmetics organizer 5 3.76 (all SKUs) 3.76 1 187 g (async spec table) 15 × 12.5 cm, read from the supplier photo
Magnetic phone holder 2 17–18 17 2 78 g (sync) in the SKU (sync)
Star projector 8 5–20.97 16.21 1 missing in sync and async missing
City backpack (similar only) 2 tiers 9.5–11 11 1 missing in sync and async missing

Why use the SKU price and not the product price_min? Because the SKU prices on one page can differ a lot. The projector page has 8 SKUs, from 5 yuan to 20.97 yuan. The 5-yuan SKU is a USB cable, and the 20.97-yuan SKU is a standing model with a remote control. An agent that uses price_min as the cost shows a margin that is much too high.

Our rule for the agent is simple. Find the design from the Yandex Market title and photo. Then find the matching row in skus. If no row matches, stop and ask a person.

The MOQ is the next field to check. The catalog calls min_order_quantity the first gate in 1688 wholesale and says to check it before you buy. In this test, 4 of the 5 chosen products had an MOQ of 1. The phone holder had an MOQ of 2. But the image-search results also showed a backpack with an MOQ of 500, and a keyword search showed a mug with an MOQ of 100.

The price_tiers field shows volume prices. The sync response for the backpack showed three tiers. They were 11 yuan for 1 to 199 units, 10 yuan for 200 to 2,999 units, and 9.5 yuan above that. The async response showed only one tier: 11 yuan from 1 unit. So the same product can show different prices at different times. Before a large order, check the real tiers on the 1688 page. Our margin table always uses the smallest-quantity price, which is the most careful cost.

Missing weight: the agent must know when to stop

International freight is priced per kilogram. Yandex Market middle-mile delivery is priced per liter. So the margin needs the unit weight and the box size. For the mug and the phone holder, the sync detail gave weight_g and the box size in the SKU.

For the organizer, the sync detail had no weight in the SKU. We sent an async detail job at 00:34 Singapore time and got the result at 00:36. Its spec table showed "gross weight 187 g". We read the size from the dimensions printed on the supplier's main photo: a round box, 15 cm in diameter and 12.5 cm high. The script uses 15 × 15 × 12.5 cm, which is about 2.8 liters. The projector and the backpack had no weight and no size in either response.

In this case, the agent must stop. It must mark freight and middle mile as "missing" and not invent a number. Our script does exactly this. For the projector and the backpack, it calculates only the money after the platform fee, the delivery fees and the purchase price. That is 876 rubles for the projector and 2,475 rubles for the backpack, and the margin column stays empty.

The Skill rule can be short: "If weight or size is missing, list the missing fields and ask the supplier. Do not estimate." This rule stops the most common error. A model can fill in a number from general knowledge, for example "a backpack weighs about 0.6 kg". The margin then looks reasonable, but nothing supports it.

The backpack has a larger problem. The Yandex Market title says "25 liters" and "for a 15.6-inch laptop". The 1688 rank-3 bag says "laptop size: 8 inches" and "capacity: 36–55 liters" in its async spec table. In the photos, both bags are plain black with one front zip pocket. A photo check alone can call them the same, but a spec check shows two different products. For bags, shoes and clothes, the agent must compare the specs as well as the photos.

Step 5: where each number in the margin formula comes from

The margin formula follows the unit economics that Russian sellers use. Start with the price. Subtract the placement fee, the delivery fee, the processing fee, the pickup fee and the middle-mile fee. Then subtract the purchase price and the freight. The table below gives the source and the read date of each item.

We use the Yandex Market FBS model. In FBS, the seller ships from its own warehouse, and the platform picks up the orders. This is the closest model for a seller who imports small lots from China and ships from a small warehouse in Moscow.

Item Value Source and read date
Placement fee (размещение) Price × category rate, 44.5% to 50% for the 5 categories Yandex Market placement fee table, read 2026-11-08
Delivery to the buyer 5% of the price, up to 1,000 rubles FBS service fees, read 2026-11-08
Order processing 25 rubles per order (not for large items) Same page
Pickup 500 rubles per day for 1 to 10 orders, so 50 rubles per order at 10 orders per day Same page
Middle mile 92 rubles up to 1 liter, plus 8 rubles per added liter, volume rounded up Same page
Exchange rate 1 yuan = 12.2651 rubles, 1 USD = 82.1386 rubles Bank of Russia official rates, 2026-11-07
International freight 120 rubles per kg (lowest rate) CDEK B2B page, "consolidated cargo from China from 120 rubles per kg", read 2026-11-08

Screenshot of the Yandex Market seller help page for FBS fees, in Russian. The text at the top says that middle-mile delivery uses the item volume: length times width times height divided by 1,000, rounded up to whole liters. A teal box marks a table in the middle: up to 1 liter, 92 rubles; from 1.001 to 200 liters, 92 rubles plus 8 rubles for each added liter; above 200.001 liters, plus 5 rubles per liter. Below is the start of example 1: a 121 kg cabinet of 200 × 60 × 31 cm with a volume of 372 liters.

The original Yandex Market FBS middle-mile rates. The teal box marks the three bands that this article uses. Captured on November 8, 2026, Singapore time. Yandex Market seller help center screenshot

The category rate is the largest number in the table, and it surprised us. The Yandex Market placement table lists rates by category for four models: FBY, FBS, Express and DBS. Our categories are between 44.5% and 50%. For example, the car accessories group is 52% overall. The placement fee uses the price that the seller sets, even after a platform discount or buyer points. If the buyer returns the item, the platform pays the placement fee back in the same month.

The FBS page has another example: a 3,000-ruble tablet case with a 510-ruble placement fee. That is 17%. So the rates differ a lot between categories. For this reason, we also calculated each row at 17%. This shows a low-fee category, not the real rate for these 5 products.

There is one more special rule. For FBS items under 300 rubles and under 5 liters, one special rate of 42% applies until the end of 2026. This rate includes placement, delivery and middle mile. Our 5 products all cost 1,200 rubles or more, so the rule does not apply. For small parts at a few dozen rubles, the agent must test this rule first, or it will charge the same fees twice.

For the exchange rate, we used the Bank of Russia official rate. The yuan rose 1.47% in one week, as the table shows. This move has almost no effect on the margin.

The phone holder cost goes up by about 3 rubles, so its margin falls by 0.25 percentage points. The mug cost goes up by 1.5 rubles, but its placement fee is 1,750 rubles. In these rows, the purchase price is only 1% to 17% of the retail price. So the category rate is more than 100 times as important as the exchange rate. A real currency exchange also adds a bank or payment spread, which the table does not include.

Bank of Russia rate date RUB per 1 CNY RUB per 1 USD RUB per 1 EUR
2026-10-31 12.0873 80.5573 89.6603
2026-11-04 12.1816 81.6699 91.6010
2026-11-06 12.2570 81.7947 92.1581
2026-11-07 (used in this article) 12.2651 82.1386 92.1924

On November 6, 2026, the People's Bank of China rate was 12.2130 rubles per yuan (rate notices, in Chinese). That is about 0.4% below the Bank of Russia rate of 12.2570. For the dollar values in this article, we use the Bank of Russia cross rate of November 7. At that rate, 8.17 yuan is about $1.22.

For freight, we used the CDEK public rate of "from 120 rubles per kg". This is the lowest rate. The CDEK consolidated cargo page says that such cargo starts at 100 kg and takes 10 to 14 days (CDEK consolidated cargo page). 100 kg is about 352 mugs or 1,282 phone holders. A small trial order goes by express courier at a much higher rate. This is one reason why every margin in the table is on the high side.

Live results: same product × 1688 price × Yandex Market price × margin

Here is the full result of the check. A script calculated every number from the raw responses. It reads the Yandex Market and 1688 JSON files, the Bank of Russia XML file and the photo labels. It applies the fees from the table above and writes one JSON file. Rubles are rounded to whole numbers. The script rounds a .5 value to the nearest even number, so 274.5 shows as 274 and 2,920.5 shows as 2,920.

Product (Yandex Market) Price (RUB) 1688 cost (CNY) MOQ Cost in RUB Fee rate Placement fee Delivery + fixed Middle mile Freight Margin (RUB) Margin %
Car travel mug, 510 ml 3,500 8.17 1 100 50% 1,750 250 100 34 1,266 36.2%
Rotating cosmetics organizer 3,990 3.76 1 46 49.5% 1,975 274 108 22 1,564 39.2%
Magnetic car phone holder 1,200 17 2 209 44.5% 534 135 92 9 221 18.4%
Astronaut star projector 2,500 16.21 1 199 49% 1,225 200 missing missing not calculated (876 left after cost) —
City backpack 5,900 11 (similar model) 1 135 49.5% 2,920 370 missing missing not calculated (similar model; 2,475 left after the purchase cost) —

Horizontal stacked bar chart in rubles per unit. Each of 5 products has one bar as long as its Yandex Market price, split from left to right into purchase cost, freight, placement fee, delivery and fixed fees, middle mile and margin (teal). Mug 3,500: cost 100, freight 34, placement 1,750, delivery and fixed 250, middle mile 100, margin 1,266. Organizer 3,990: 46, 22, 1,975, 274, 108, margin 1,564. Phone holder 1,200: 209, 9, 534, 135, 92, margin 221. Projector 2,500 and backpack 5,900 show freight and middle mile as missing, and the last gray part says "876 left after cost" and "2,475 left after cost". Title: the platform fee is the largest part, and the purchase cost is only 1% to 17% of the price.

The first conclusion is direct. For these small goods, the 1688 cost is a very small part of the price. It is 2.9% for the mug, 1.2% for the organizer and 17.4% for the phone holder. The platform fee takes most of the money. In the 3,500-ruble price of the mug, the placement fee is 1,750 rubles, more than 17 times the purchase cost.

So Russian sellers are right when they say that "the goods are cheap", but that is only half of the story. At a 17% category rate, the mug margin goes from 36.2% to 69.2%. The organizer goes from 39.2% to 71.7%, and the phone holder goes from 18.4% to 45.9%. The fee rate is the most sensitive number in the table.

The phone holder shows a different problem. It has the most ratings on Yandex Market (5,372), so it sells. But in a 1,200-ruble price, the 17-yuan cost is 209 rubles. Each order also pays 25 rubles for processing and 50 rubles for pickup. These fixed fees stay the same at 1,200 or at 3,500 rubles. Yandex Market has a separate 42% rate for items under 300 rubles, as the section above shows.

The table does not include some costs. If you do not know them, the table looks like net profit. The next table lists them with a rough value where public data permits one.

Cost not in the margin table Rough value for our rows Source
Import VAT 22% of cost plus freight: about 30 RUB (mug), 15 RUB (organizer), 48 RUB (phone holder) Basic VAT rate 22% from 2026-01-01 (Federal Tax Service note, in Russian, ConsultantPlus summary, in Russian)
Customs duty Depends on the product code Find it for each code
Income tax or simplified tax Depends on your tax status Your own tax setup
Returns 15 RUB sorting fee per return, plus return shipping at the middle-mile rate FBS service fees
Advertising and promotions Your own budget Not public
Currency spread and payment fees Your bank or payment service Not public

Together, these costs can turn the phone holder row into a loss. Use this table to remove clearly bad products. Do not use it as the final buying decision.

The same mug has 5 prices on Yandex Market

Step 1 took only the top mug at 3,500 rubles. Does the price of the top seller show the market price?

At 00:36 Singapore time, we ran yandex/market again with a narrower keyword, "термокружка coffee 510 мл", and took 20 items. We put each item in one of three tiers. Tier A has the same body and lid. Tier B has the same type of mug with a different lid or sleeve. Tier C is a different product.

The result was 5 items in tier A, 10 in tier B and 5 in tier C. The 5 tier-A items cost 3,500, 2,874, 2,441, 1,586 and 1,227 rubles. The highest price is almost 3 times the lowest, and the median is 2,441 rubles. So the top seller has the highest price. A new seller with the same mug will find it hard to get 3,500 rubles.

At the median of 2,441 rubles (about $29.72), the margin is 789 rubles, or 32.3%. At the lowest price of 1,227 rubles (about $14.94), the margin is only 243 rubles, or 19.8%. With a 17% category rate, the same two prices give 1,595 rubles (65.3%) and 648 rubles (52.8%).

Horizontal bar chart in rubles. The 20 Yandex Market items for "термокружка coffee 510 мл" are sorted from the lowest to the highest price, with colors for three tiers. Tier A, same product (teal), 5 items: 1,227, 1,586, 2,441, 2,874, 3,500. Tier B, same type with a different lid (light gray), 10 items from 1,472 to 12,253. Tier C, different products (dark gray), 5 items from 3,799 to 53,120. A dashed vertical line marks the landed cost of about 134 rubles (100 cost plus 34 freight). Title: 5 sellers list the same mug, from 1,227 to 3,500 rubles.

Line chart. The horizontal axis is the mug price in rubles, with 5 points at the 5 tier-A prices: 1,227, 1,586, 2,441, 2,874 and 3,500. The vertical axis is the margin per unit in rubles. Two lines: at a 50% category rate, 243, 404, 789, 984 and 1,266 (solid teal line); at a 17% rate, 648, 928, 1,595, 1,932 and 2,421 (dashed gray line). Title: the cost of the mug stays the same, and the price and the fee rate set the margin.Source:https://dev.to/everyinfrahq/1688-api-in-claude-code-a-sourcing-agent-that-checks-margin-against-yandex-market-5549