Framejet
Beyond the initial URL

Capture the page that only exists after the clicks.

Use CSS-selector actions when you know the page. Use a goal when the target and its controls are discovered only while the browser moves through an arbitrary site.

The problem

The selector for step two often does not exist when step one begins. A static script cannot name a control that appears only after a search, navigation or tab change.

How Framejet handles it

Framejet keeps the browser session alive, re-reads the visible controls after each step and stops only when the requested page state is reached. Unreached goals return an error and cost no credit.

curl -G "https://framejet.dev/v1/take" \
  -H "X-Api-Key: YOUR_KEY" \
  --data-urlencode "url=https://en.wikipedia.org/" \
  --data-urlencode "goal=Search for the Colosseum article. Stop when it is open." \
  --data-urlencode "values=Colosseum" -o shot.png

Selectors when possible

actions= remains deterministic, reproducible and faster for pages you already know.

Goals when necessary

Plain-language navigation handles controls that appear only after earlier steps have completed.

No false success

A goal that cannot be reached returns 422 goal_unreached instead of a screenshot of the wrong page.

Try it on the page your current script cannot reach. No card, 200 screenshots a month, and failures never spend a credit. Get a key.