Web Form Extractor - Form Fields, Method & Action from URL avatar

Web Form Extractor - Form Fields, Method & Action from URL

Pricing

from $0.80 / 1,000 scanned pages

Go to Apify Store
Web Form Extractor - Form Fields, Method & Action from URL

Web Form Extractor - Form Fields, Method & Action from URL

Extracts every HTML form from a page URL, one or up to 50 per run: action, method, encoding and each field's name, type, required flag and placeholder. Returns one record per page with password, email and file flags. For penetration testers, QA automation engineers and marketing ops teams.

Pricing

from $0.80 / 1,000 scanned pages

Rating

0.0

(0)

Developer

Broke to Built

Broke to Built

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

11 days ago

Last modified

Features

Limited permissions

Share

Web Form Extractor — every form's fields, method & action from a URL

Web Form Extractor lists every HTML form on a page with its action, method, encoding and each field's name, type, required flag and placeholder, at $0.001 per page on the Apify Free plan.

You give itYou get backYou pay (Free plan)
One URL or a list of up to 50 (25 by default)ok, url, status, formCount, and per form: action, method, enctype, fieldCount, fields, hasPassword, hasEmail, hasFile$0.001 per page

Pay per result only: no subscription, no start fee. An unreachable URL returns {ok:false, error} and is not charged. Paid Apify plans get Store discounts on the price above.

Example: try it in one click

The input form is already filled in with this example. Press Start and you get the output below.

{
"url": "https://httpbin.org/forms/post"
}

Real output from that exact input (run on 2026-09-24; long arrays shortened to a few entries and long text cut for display):

[
{
"ok": true,
"url": "https://httpbin.org/forms/post",
"requestedUrl": "https://httpbin.org/forms/post",
"status": 200,
"formCount": 1,
"forms": [
{
"action": "https://httpbin.org/post",
"method": "post",
"enctype": "application/x-www-form-urlencoded",
"id": "",
"name": "",
"fieldCount": 12,
"hasPassword": false,
"hasEmail": true,
"hasFile": false,
"fields": [
{
"name": "custname",
"type": "text",
"required": false,
"placeholder": "",
"value": ""
},
{
"name": "custtel",
"type": "tel",
"required": false,
"placeholder": "",
"value": ""
}
]
}
]
}
]

Extract all forms on a web page with their action, method, enctype, and every field (name, type, required, placeholder, value) — plus quick flags for hasPassword, hasEmail, and hasFile. Built for security review, QA/automation mapping, and lead-form auditing. Single URL or bulk.

$0.001 per page. Failed fetches are recorded free.

What you get

  • One record per page, listing every <form>.
  • Per form: action, method, enctype, id, name, fieldCount, and a fields array.
  • Per field: name, type, required, placeholder, value (left empty for password and hidden fields, and for fields named like a token, PIN or card number).
  • Convenience flags: hasPassword, hasEmail, hasFile.
  • Fail-soft: an unreachable URL returns {ok:false, error} and is never charged.

Input

{ "url": "https://github.com/login", "urls": ["https://example.com/contact"], "maxUrls": 25 }

Output (real run, 2026-08-07)

{
"ok": true,
"url": "https://github.com/login",
"status": 200,
"formCount": 1,
"forms": [
{
"action": "https://github.com/session",
"method": "post",
"enctype": "application/x-www-form-urlencoded",
"fieldCount": 16,
"hasPassword": true,
"hasEmail": false,
"hasFile": false,
"fields": [
{ "name": "login", "type": "text", "required": true, "placeholder": "", "value": "" },
{ "name": "password", "type": "password", "required": true }
]
}
]
}

Pricing — $0.001 per page

$0.001 per page scanned on the Apify Free plan, billed as the page-scanned event. Paid Apify plans pay less ($0.00093 Bronze, $0.00087 Silver, $0.0008 Gold, $0.00073 Platinum, $0.00067 Diamond). No start fee. Failed fetches are recorded free. A page with no forms was scanned successfully and is charged.

Limits (honest ones)

  • Reads the server HTML; forms injected by JavaScript after load are not seen (no headless browser).
  • Field action is absolutized to the page URL when relative.
  • maxUrls is capped at 50 per run (25 by default).

FAQ

  • Does it submit forms? No — it only reads and describes them.
  • Does it run JavaScript? No — server HTML only.
  • Can it flag login/upload forms? Yes — hasPassword, hasEmail, and hasFile make those easy to filter.
  • What about a dead URL? You get an {ok:false, error} record, uncharged.
  • Does it return what users typed into a form? No. It reads the page's HTML as served, so value is only a default value written into the page, and it is left empty for sensitive fields.

Use from code or AI agents

curl -X POST "https://api.apify.com/v2/acts/EliAI~webpage-forms-extractor/runs?token=YOUR_APIFY_TOKEN" \
-H 'content-type: application/json' \
-d '{"url":"https://github.com/login"}'

Callable as an agent tool through the Apify MCP server (mcp.apify.com).

For AI agents

This Actor is built to be called by software, not just by people.

  • Mount it directly as an MCP tool — no Store search, no ranking, just this one tool: https://mcp.apify.com/?actors=eliai/webpage-forms-extractor
  • Or call it over HTTP and get the results in the same request: POST https://api.apify.com/v2/acts/eliai~webpage-forms-extractor/run-sync-get-dataset-items
  • Costs are predictable before you call. Pricing is pay-per-event (see Pricing above), so an agent can budget a run in advance instead of discovering the bill afterwards.
  • Send only the field you mean. If you pass the bulk field, it is used on its own; the single-value field is a fallback, never merged into your request. You are charged for the items you sent and nothing else.

Who uses it

  • Penetration testers listing a site's forms, their actions and password or file fields
  • QA automation engineers mapping form field names before writing end-to-end tests
  • Marketing ops teams auditing lead forms across landing pages for required fields
  • Accessibility reviewers finding inputs without names or placeholders
  • Scraper developers learning a form's method and fields before automating submissions

Changelog

  • 2026-11-01: Page text only: the "Try it" block is now headed Example. Code, output and price are unchanged.
  • 2026-09-24: New summary at the top of this page: what you send, what you get, the price, and a real output from the prefilled example.