Form Finder
Pricing
Pay per event
Form Finder
This actor finds and analyzes HTML forms on web pages. It extracts form fields, classifies forms by type (search, login, contact, newsletter), detects file upload and password fields, and provides submit button text. Useful for web scraping preparation and site analysis.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
5
Total users
2
Monthly active users
7 hours ago
Last modified
Categories
Share
Extract and analyze HTML forms from web pages with field details.
What does Form Finder do?
This actor finds and analyzes HTML forms on web pages. It extracts form fields, classifies forms by type (search, login, contact, newsletter), detects file upload and password fields, and provides submit button text. Useful for web scraping preparation, site analysis, and security reviews.
The actor loads each page, parses all form elements in the DOM, and returns structured data about each form including its action URL, method, field inventory, and classification. This gives you a complete picture of how a site collects user input.
Use cases
- Scraping preparation -- identify form fields and action URLs for automated form submission in web scraping workflows
- Site audit -- catalog all forms across a website to understand data collection points and user interaction patterns
- Security review -- find forms that accept file uploads or passwords without HTTPS, or forms with insecure action URLs
- UX analysis -- review form complexity, field counts, and label usage to identify usability improvements
- Migration planning -- document all forms on a site before a redesign to ensure no functionality is lost
Why use Form Finder?
- Automatic classification -- forms are categorized as search, login, contact, or newsletter without manual inspection
- Structured output -- get clean JSON with form actions, methods, field types, names, and placeholders ready for automation
- Batch processing -- scan hundreds of URLs in a single run to catalog forms across an entire website
- Field-level detail -- every input, select, and textarea is reported with tag, type, name, and placeholder attributes
- API access -- integrate form discovery into web scraping pipelines or site audit workflows
- Pay-per-event pricing -- only pay per URL scanned with no monthly fees
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
urls | array | Yes | -- | List of URLs to extract forms from. Each URL is loaded and all form elements in the DOM are analyzed. |
Example input
{"urls": ["https://www.google.com","https://www.wikipedia.org","https://example.com"]}
Output fields
Each URL produces one record with the following fields:
| Field | Description |
|---|---|
url | The original URL provided in the input |
formCount | Total number of forms found on the page |
searchForms | Count of forms classified as search |
loginForms | Count of forms classified as login |
contactForms | Count of forms classified as contact |
forms | Array of form objects with action, method, formType, fieldCount, and fields |
error | Error message if the scan failed, null otherwise |
checkedAt | ISO 8601 timestamp of the scan |
Each form object in the forms array contains an array of fields, where each field has tag, type, name, and placeholder attributes.
Output example
{"url": "https://www.google.com","formCount": 1,"searchForms": 1,"loginForms": 0,"contactForms": 0,"forms": [{"action": "/search","method": "GET","formType": "search","fieldCount": 1,"fields": [{ "tag": "input", "type": "text", "name": "q", "placeholder": null }]}],"error": null,"checkedAt": "2026-03-01T12:00:00.000Z"}
How to find forms on a website
- Go to the Form Finder page on Apify Store.
- Enter one or more website URLs into the URLs field.
- Click Start and wait for the run to finish.
- Review the results to see all forms found on each page, classified by type (search, login, contact, newsletter).
- Download your data in JSON, CSV, or Excel format.
How much does it cost to scan websites for forms?
Form Finder uses Apify's pay-per-event pricing. You only pay for what you use.
| Event | Price | Description |
|---|---|---|
| Start | $0.035 | One-time per run |
| URL scanned | $0.001 | Per URL scanned |
Cost examples:
- 10 URLs: $0.035 + 10 x $0.001 = $0.045
- 100 URLs: $0.035 + 100 x $0.001 = $0.135
- 1,000 URLs: $0.035 + 1,000 x $0.001 = $1.035
Using the Apify API
You can start Form Finder programmatically using the Apify API. Replace YOUR_TOKEN with your Apify API token.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('automation-lab/form-finder').call({urls: ['https://www.google.com', 'https://www.wikipedia.org'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('automation-lab/form-finder').call(run_input={'urls': ['https://www.google.com', 'https://www.wikipedia.org'],})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl "https://api.apify.com/v2/acts/automation-lab~form-finder/runs" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_TOKEN" \-d '{"urls": ["https://www.google.com", "https://www.wikipedia.org"]}'
Use with AI agents via MCP
Form Finder is available as a tool for AI assistants via the Model Context Protocol (MCP).
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com"
Setup for Claude Desktop, Cursor, or VS Code
{"mcpServers": {"apify": {"url": "https://mcp.apify.com"}}}
Example prompts
- "Find all forms on this website"
- "Check what forms exist on our competitor's site"
Learn more in the Apify MCP documentation.
Integrations
Connect Form Finder with other tools using Apify integrations. Export form inventories to Google Sheets for documentation, send Slack alerts when new forms appear on monitored pages, trigger Make or Zapier workflows for form data processing, push results to n8n for custom pipelines, or configure webhooks for automated site monitoring.
Tips and best practices
- Use form actions and field names to build automated form submission scripts for web scraping workflows.
- Filter by formType to quickly find login forms (security audit), contact forms (lead generation analysis), or search forms (scraping targets).
- Check for password fields without HTTPS in the form action URL, which represents a security vulnerability.
- Run against all pages of a site to create a complete form inventory before migration or redesign projects.
- Combine with Accessibility Checker to verify that forms have proper labels and ARIA attributes for screen reader compatibility.
Legality
This tool analyzes publicly accessible web content. Automated analysis of public web resources is standard practice in SEO and web development. Always respect robots.txt directives and rate limits when analyzing third-party websites. For personal data processing, ensure compliance with applicable privacy regulations.
FAQ
What form types does the actor detect? The actor classifies forms as search, login, contact, or newsletter based on field types, names, and action URLs. Forms that do not match any pattern are reported as "other."
Does the actor detect forms created by JavaScript frameworks? Yes. The actor uses a real browser to load pages, so forms rendered by React, Vue, Angular, or other JavaScript frameworks are detected just like static HTML forms.
Can I use this to automatically submit forms? Form Finder is a read-only tool that extracts form structure and field information. It does not submit forms. Use the extracted field names and action URLs to build your own submission logic with tools like Apify's web scraping SDK.
The actor found zero forms but I can see a form on the page. Why?
Some modern web applications build forms using custom JavaScript components (e.g., React controlled components) without using the standard HTML <form> element. While the actor detects forms rendered by JavaScript frameworks that use the <form> tag, forms built entirely with <div> and <input> elements without a wrapping <form> tag will not be detected.
The form action URL is empty or shows "#". Is this a problem? An empty or "#" action URL means the form submits to the current page URL. This is common for JavaScript-handled forms where the submission is intercepted by client-side code. The form is still functional; the submission logic is handled in JavaScript rather than through a traditional form post.
Other SEO and website analysis tools
- Favicon Extractor — extract favicon URLs from web pages including ICO, PNG, SVG, and Apple touch icons
- Font Detector — detect web fonts loaded on any website including Google Fonts, Adobe Fonts, and custom @font-face
- Website Health Report — check website health including SSL, performance, and SEO basics
- Tech Stack Detector — identify technologies, frameworks, and tools used on any website


