A typo in an input field name now gets a helpful pointer instead of sample rows.
- A run that configures something but reaches the actor with no seed keywords now gets one uncharged row naming the field. Anything the actor does not recognise is ignored, so a misspelled field name — or settings with the seed list left out — used to look exactly like a run with no input at all, and came back with the uncharged sample rows. Those samples are always United States / English, so a run that had also set a different country read as a real answer for the wrong market. You now get a row that names the field it did not recognise and the field it needed, and nothing is charged.
- Running the actor with no input at all still returns the uncharged sample rows, exactly as before.
Large runs finish faster — same rows, same prices.
- Each seed-and-engine's suggestions are now written to your dataset in one step instead of one row at a time, so a run that fans a seed list out across engines and expansions spends its time on lookups, not on bookkeeping. Nothing about the output changed: same rows, same fields, same order, same prices, and interrupted or moved runs still resume without repeating or double-charging anything.
Review-fix build: the time limit you set bounds the run, not each server the run lives on.
maxRunSeconds is measured from the moment your run started. Apify can move a run to another server mid-flight; until now the new server started the clock again from zero, so a run you capped at ten minutes could keep working for ten more after every move. The cap now covers the whole run, however many times it is moved, and the run still stops cleanly with a summary row and a resume cursor.
A run that the platform moves, restarts or that you resurrect now picks up exactly where it left off — it never writes a suggestion twice and never charges for one twice.
- Suggestions already in your dataset are never collected, written or charged again. Apify can move a run to another server mid-flight, and you can resurrect a finished run with one click. Until now either of those re-ran the whole job: the same suggestions landed in your dataset a second time and were charged a second time. The run now reads back what it has already delivered and continues from there.
- A run that was interrupted between delivering a row and charging for it now settles that one charge, so the
charged: true on the row is true. It can only ever settle a charge that was missed — it can never charge twice for the same row.
maxItems means what it says even after a restart. A restarted run used to begin counting rows from zero again and could deliver up to twice the cap you typed. The cap now counts what the run has delivered, not what the current server has.
maxRunSeconds and the actor's own 30-minute ceiling now bound the run, not each server it lives on. A moved run used to be handed a whole fresh clock.
- If the platform tells the run it is being moved, the run stops taking on new work, says so plainly in the summary, and lets the resumed half carry on. And in the rare case where a run cannot read back what it already delivered while it has already been charged for part of it, it collects nothing and charges nothing rather than risk billing you for the same suggestions twice — the run still succeeds and the message says exactly that.
- The run's bookkeeping travels on hidden columns, so the output you download is unchanged — same fields, same order, nothing new to ignore.
- Shelf links: Google Trends Now, Social Trends, YouTube Transcripts, YouTube Channel Transcripts and Speech to Text are live and now linked.
Review-fix build: unexpected errors now fail loudly, sample rows can never bill you, and one stop reason that could never fire is gone.
- A run that hits an unexpected internal error now stops and reports it instead of finishing as "succeeded". Until now such an error was swallowed inside the engine pool: its suggestions could land in your dataset while the run's own summary and charge for them were skipped, so the numbers you were shown did not match the rows you got.
- A sample run can never write a row it would have to bill you for. With no seed keywords the actor returns uncharged sample rows as before; under a pricing state where every dataset row is billable it now writes no rows at all and says so plainly, rather than shipping samples while the message claimed nothing was charged.
- The reasons a run can give for stopping early no longer include a per-run request limit that could never actually fire. A seed list too large for one run's request ceiling is still trimmed and named up front, in its own row, before any request goes out.
Initial release.
- One seed keyword fans out to Google, YouTube, Amazon, Bing and the App Store in a single
run. No API key, no login, no start fee.
- One charge per suggestion delivered. An engine that returns nothing for your seed ships
as its own row and is not charged, and every seed-and-engine pair the run planned is
accounted for — no engine is ever silently dropped.
- Optional expansion: a-to-z alphabet soup, question words, or prepositions, with the
expansion token that produced each suggestion carried on its row.
- Country support per engine, with an honest row when an engine has no marketplace or
storefront for the country you asked for, instead of quietly answering for the US.
maxPerSeed is counted per engine, so one talkative engine cannot use up the cap before
the others are asked. maxItems and maxRunSeconds stop the run cleanly with a summary
row and a resume cursor.