# Changelog of 1688 Landed Cost API: Delivered Price, Duty & AliExpress Margin (`sourcing-data-studio/1688-landed-cost-api`) Actor

- **URL**: https://apify.com/sourcing-data-studio/1688-landed-cost-api/changelog.md
- **Full Actor documentation**: https://apify.com/sourcing-data-studio/1688-landed-cost-api.md

## Changelog

### 0.1.4 (2026-11-04)

- README: the first screen now shows what you get before the notices. A short opener, then an "At a glance" table of three real rows: product, destination, quantity, unit price in CNY, delivered cost per unit, and duty for the whole order.
- When the dataset you give has no rows, the run's message now says only what is known: the platform created that empty dataset for this run, it holds no rows from this Actor, and it costs nothing. No product is charged, as before.
- No change to the input, the output fields or the prices.

### 0.1.3 (2026-11-04)

- An unknown dataset ID or `username~dataset-name` in `datasetId` now fails at once, with no product charged, and no longer leaves an empty dataset of that name in your account: the Actor first asks the platform for the dataset (a read only) and opens it only when the platform finds it.
- A dataset name alone is no longer accepted: before, a name of 17 letters and digits passed for an ID and was opened as a name. Give the dataset ID or `username~dataset-name`.
- The `datasetId` field and the run's messages now say how to give the dataset of a 1688 scraper run: the list shows named datasets only, so paste the run's dataset ID, shown on the run's Storage tab.

### 0.1.2 (2026-11-04)

- The README's output example now shows three rows from a real platform run (Bahrain by air express, with the AliExpress market check). No change in the code, the input or the price.

### 0.1.1 (2026-11-04, first build, not yet on the Store)

- First version of the 1688 landed cost API. It reads 1688 product rows the user already has, the dataset of a 1688 scraper run (`datasetId`, read only) or CSV text (`productsCsv`), and never asks 1688 for a page (`RUN_SUMMARY.otherHosts` lists the hosts outside the four sources that the loaded pages reached by themselves).
- One row per product and destination (BH, SA, AE, OM, QA, KW, GB, US): the price tier for the quantity (or the MOQ), goods, shipping inside China, freight from the user's own rate, insurance, the value duty is charged on, every duty line, US entry fees, VAT, and the landed total and cost per unit with and without VAT, in the destination currency. With a sell price: profit per unit and margin.
- Exchange rates from the ECB euro reference rates of the day (cross rates to 10 significant digits) and the published Gulf currency pegs. UK duty and VAT from the UK Trade Tariff, US duty from the Harmonized Tariff Schedule (the general rate and the 12.5 % forced-labour Section 301 duty on goods from China), GCC duty at the 5 % common external tariff. The Section 301 list duties are not included in this version (flag `US_301_NOT_INCLUDED`, or the user's own rate through `us301Percent`): the table of the codes each list covers did not pass its independent check.
- Every figure carries its basis (`computed`, `user`, `default-assumption`, `suggested-code` or `not-computed`), every row its flags, the ECB date, the tariff dates, the version of every data table and the notice "Estimate only, not a customs ruling or tax advice. ..." of the method.
- Optional AliExpress market check per keyword: median, lowest and top-selling price, and the margin per unit: the median net of the destination VAT, less the landed cost per unit without VAT. A failed check is shown in the row and does not stop it.
- One charged event per computed row (`landed-cost-result`). Rows that cannot be computed (no price, no HS code for the UK or the US, a failed tariff lookup, a duplicate, excise goods) are skipped, listed in the run summary with the reason and never charged.
