An Actor with no pricing applied no longer returns an empty dataset. Pricing on Apify is
account state applied separately from the code, so every Actor passes through a "deployed but
not yet priced" window, and a failed or forgotten apply_pricing.py leaves it there. In that
state Actor.charge() does not raise: it logs a warning and reports zero charged. That was
being read as "the buyer's maximum charge is exhausted", which stopped the run before it
delivered anything. Caught on the platform on the sibling Scene Splitter Actor, which has the
same charging shape.
A run now decides once whether it is billing and never gates delivery on charging when it is
not: a missing price degrades to "analyze everything, bill nothing", never to "bill nothing,
deliver nothing". Nothing changes while pricing is applied, which is proven by
scripts/prove_no_behavior_change.py across seven priced scenarios including the maximum-charge
and migrated-resume paths that share the modified branch.
0.6 - 2026-08-12
A run with no visionApiKey is now a free preview instead of an error. It downloads, probes
and scene-detects each video and writes the measured record plus the sampled frames, with
status: preview, and charges no per-video event. Capped at 3 videos, because the preview
does the expensive half of the pipeline against a single $0.01 start event.
This is also what makes the Actor survive Apify's daily automated test, which runs the input
schema's prefill values, cannot supply a credential, and labels an Actor under maintenance
after three consecutive failures. visionApiKey is no longer in the schema's required list
(which would have failed the run at the API layer) and videoUrls now prefills a stable
public demo clip.
Records no model ever read now carry blank productionStack, structureStyle and
confidence rather than the fail-closed defaults 'mixed', 'unclassified' and 'low'. Those
defaults are answers, and a video that was never analyzed has none. Applies to preview rows
and failed rows alike.
0.5 - 2026-08-12
Renamed every output dataset field to camelCase (productionStack, cutCadenceSeconds,
formatScore, onScreenText and the rest). This matches Apify's own convention and the
scraper Actors buyers chain this one behind, so a record joins theirs without a rename step.
Applied across the records, the dataset schema and all three views, and the docs.
0.4 - 2026-08-12
Added an Apify output schema declaring both places output lands: the teardown records in the
default dataset and the sampled frames in the key-value store. Required before publication,
and it is what lets an AI agent calling this Actor know what it will get back.
The dataset schema now documents all 26 fields with a title, description, example and, where
the value is a closed set, the enum. Added a third "Measured from file" view alongside
Overview and Craft detail.
0.3 - 2026-08-12
Repositioned around dataset chaining. Validation on the platform showed TikTok, Instagram and
YouTube all block video fetching from cloud servers, so a scraper's dataset is the primary
input and pasted page links are documented as not working.
Default run memory raised to 4096 MB. At 1024 MB the container gets a quarter of a CPU core,
which starved ffmpeg and cost frames the buyer had paid for. Confirmed on the platform: 9 of 9
videos now deliver the full 6 frames with no timeouts, and per-video compute fell 38% on the
comparable run because wall time dropped faster than memory rose.
v1 supports Anthropic only. The OpenAI adapter is built and unit-tested but has not been
validated against a live account, so selecting it returns a clear message instead of running
an unproven path.
0.2 - 2026-08-10
Default model is now the balanced tier on each provider: claude-sonnet-5 and
gpt-5.6-terra. The most capable options stay one field away on visionModel.
Added a preflight that checks your key and model id against your own account before the run
starts. An invalid model now fails once, for free, listing the models you can use, instead of
failing per video after each download.
0.1 - 2026-08-09
First build. Downloads short-form video, samples frames, and returns one structured teardown
record per video: production stack, hook style, structure style, on-screen text, asset kit,
measured scene count and cut cadence.
Buyer-supplied vision API key, Anthropic or OpenAI. You pay your model provider directly.
Pay-per-event: $0.01 per run at start, $0.04 per video that produced a record. Videos that
fail are reported in the dataset and are not charged.
Accepts direct media URLs, page links (resolved automatically), or a dataset id from any
upstream scraper Actor.