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_searchreturned 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.
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.
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.
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 |
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.
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 |
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) | — |
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%).
Source:https://dev.to/everyinfrahq/1688-api-in-claude-code-a-sourcing-agent-that-checks-margin-against-yandex-market-5549




