-
Agent signals (brief docs/cloud-tasks/2026-10-20_aliexpress-search-extend-agent-signals.md, agent panel of 2026-10-20: agents picked competitors for exact sales, price-drop labels and the delivery country):
- Exact units sold:
soldCount now takes the exact figure of the card data (pdp_cdi.order) when it agrees with the label (equal to an exact label, at or above a rounded one): 339 of 339 products with a label in the captures of 2026-10-19, e.g. 981 behind "900+ sold"; otherwise the label's lower bound as before. The label as displayed goes to attributes.soldCountText; RUN_STATS.extra.soldCountsRounded counts the rows left with a lower bound, with a warning above 20 %. minSold therefore compares exact figures.
- Direction of a price change:
attributes.priceDirection = drop, rise or same on compared rows (absent on new products and currency switches); changeType keeps its three values. New input onlyPriceDrops (default false, needs monitorMode on): only the drops are written and charged, every compared price is still recorded, the first run writes nothing and says so. RUN_STATS.monitor gains priceDrops, priceRises, onlyPriceDrops; RUN_STATS.extra gains monitorPriceDrops, monitorPriceRises. The monitor record key and format are unchanged: existing schedules keep their reference.
- Shipping by country:
attributes.shipsTo = the delivery country (as viewCountryCode) on every row; attributes.freeShippingThreshold from the "Free shipping over 10€" badge (32 of 60 French cards; shippingFree stays null on them). README section Shipping, delivery and units sold by country: what the cards show for US and FR (no delivery date on French cards).
- Texts written for AI agents: every input description under 500 characters with its default justified, column descriptions updated (
soldCount, shippingFree, deliveryEstimate, attributes, viewCountryCode, changeType), FAQ How do I get alerted when prices drop? (the URL question moved to the Input section to keep 10 questions), Store description mentions exact units sold and price-drop monitoring.
- Output schema unchanged (
ecommerce-product/1.1): the new signals live in attributes because the unified schema is shared by the e-commerce Actors. Without the new option, rows differ from the previous build only by soldCount (exact) and the new attributes keys (replayed traces).
-
Store texts (brief docs/cloud-tasks/2026-10-20_studio-promote-store-texts.md, 2026-10-20): README opens with what you get / for whom / how much, shows the real input of the validation run, a pricing table that points to the Pricing tab (no figure in the text), a For AI agents (MCP) section with a minimal input, the key output fields, the cost per 1,000 results and the typical time; FAQ kept to 8–10 questions; no proxy or anti-bot detail left in the texts visible on the Store. Tests on the Store lengths (seoTitle ≤ 60, seoDescription ≤ 155, description ≤ 300), the README structure and the forbidden mentions. No code change.
-
Filters (brief n°6, 2026-10-19): minRating, minSold, shipsFrom, choiceOnly, listedWithinDays, applied after each page is read and before charging (a rejected product is never saved, never charged, does not count in maxResults); counters in RUN_STATS.extra (filteredOut and one per filter); a search stops after 5 consecutive pages without a kept product (searchesStoppedByFilters).
-
Price monitoring: monitorMode (off / changes / all) and monitorKey; previous prices kept in the customer's named key-value store aliexpress-monitor-<monitorKey>, one record per search (keywords or URL, country, currency, sort, filters); changes returns and charges only new products and price changes, all every compared product with its changeType; first run = reference (RUN_STATS.monitorBaseline); RUN_STATS.monitor summary; records written only after a search that ended cleanly (fail-closed); a monitoring run without any change succeeds with an empty dataset; maxResults = products compared per search.
-
Output schema ecommerce-product/1.1 (additive): isChoice (AliExpress Choice badge), listedAt (listing date), changeType, previousPrice, priceDelta, priceDeltaPercent; new dataset view Changes; Overview and Ranking views show the Choice flag and the listing date. Without the new options the rows are identical to 0.1 apart from the new columns (replayed traces).
-
README: sections Filters and Price monitoring, FAQ entries; two more example tasks (aliexpress-monitor-earbuds-prices, aliexpress-choice-top-rated), 10 in total.
-
Internal: the crawl runs on the studio's generic paged-search crawler and Actor runner (@scraper-studio/core/crawl, /actor-runner); platform code is reduced to AliExpress hooks (search URL, preference cookie, parsing, end of results, sponsored and no-price cards). Requests, rows and log lines are unchanged (replayed traces).
-
RUN_STATS: productsSeen / productsPushed become itemsSeen / itemsPushed; sponsoredSeen and productsWithoutPrice move under extra; new bytesTransferred, bytesTransferredEstimates; bytesSource can be gzip-estimate.
-
Dataset schema now generated from the unified ecommerce-product schema and .actor/dataset-fields.json / .actor/dataset-views.json (scripts/gen-dataset-schema.mjs); generated JSON unchanged.
-
Store readiness tests moved to the shared @scraper-studio/core/testing checks (same coverage); this changelog referenced from actor.json.