# Contact Form Finder: Form Fields, Embed Type & Captcha Flag (`tenfoldfleet/contact-form-finder`) Actor

Check a list of websites for a contact form and see what it asks for: contact page URL, form fields and required fields, action and method, form builder or embed (HubSpot, Typeform, Jotform, CF7, Gravity Forms) and a reCAPTCHA, hCaptcha or Turnstile flag. $3 per 1,000 sites found; the rest free.

- **URL**: https://apify.com/tenfoldfleet/contact-form-finder.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** Lead generation, Agents, MCP servers
- **Security:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 website with contact page or forms

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Contact Form Finder do?

**Contact Form Finder** takes a list of websites and tells you, for each one, **where the contact page is and what the contact form looks like**: its **fields and required fields**, the **form action URL and HTTP method**, which **form builder or embed** runs it (HubSpot, Typeform, Jotform, Google Forms, Formspree, Contact Form 7, Gravity Forms, WPForms and more), and whether the form is protected by **reCAPTCHA, hCaptcha or Cloudflare Turnstile**.

It works as a **contact form finder API**: plain HTTP requests, no browser, a few seconds per site, one row per website. You **only pay for websites where a contact page or a contact form was found**.

**How it differs from [Company Contact Finder](https://apify.com/tenfoldfleet/company-contact-finder):** that actor collects **emails, phone numbers and social profiles**. This one does not return emails or phones. It answers a different question: *is there a contact form on this site, and what does it need?* Run both if you want both.

### Why use a contact form finder?

- 📬 **Outreach teams** that reach companies through their website form instead of email: get the form URL and the fields to fill for every site in a list.
- 🤖 **Automation and AI agents**: check which fields a form requires and whether a captcha is present before deciding how a person should handle it. This actor only reads forms; it never fills, submits or solves anything.
- 🧭 **Sales and market research**: see which sites use HubSpot, Typeform, Jotform or Gravity Forms, a useful signal of their marketing stack.
- 🛠️ **Agencies and web audits**: list client sites with no contact form, a broken contact page or no spam protection.
- 🔁 **Repeat checks**: run the same list on a schedule and spot sites whose form provider or captcha changed.

### What data can it extract?

| Field | Example |
|---|---|
| `domain` | `example.com` |
| `contactPageUrl` | `https://www.example.com/contact/` |
| `hasForm` | `true` |
| `formProvider` | `Gravity Forms`, `HubSpot`, `Typeform`, `HTML form` ... |
| `embedType` | `native` (form in the HTML), `script` (drawn by JavaScript) or `iframe` |
| `formAction`, `formMethod` | `https://www.example.com/contact/`, `POST` |
| `fieldCount`, `fieldNames`, `requiredFields` | `11`, `["input_4.3", ...]`, `["input_4.3", "input_2"]` |
| `hasCaptcha`, `captchaType` | `true`, `Turnstile` |
| `forms` | every contact form found, each with `fields` (name, type, label, required, select options) |
| `note` | why fields are missing for a JavaScript embed |
| `notFound` / `error` | set on free rows: no contact page or form, or site unreachable |

### How to find the contact form of a website

1. Click **Try for free**.
2. Paste websites into **Websites**, one per line. Bare domains (`acme.com`) and full URLs both work.
3. Optionally change **Max extra pages per site** (default 6).
4. Click **Start** and download the results.

For each site the actor loads the homepage, follows contact links from the menu and footer, tries `/contact`, `/contact-us` and `/get-in-touch` (a 404 there is normal), and if nothing turns up it looks for contact pages in `sitemap.xml`. Contact forms on the homepage count too. Newsletter sign-ups, search boxes, login and cart forms are left out.

### How much does it cost to find contact forms?

**$3 per 1,000 websites** with a contact page or a contact form ($0.003 each), plus a tiny start fee of $0.00005 per run. Sites with no contact page and no form, unreachable sites and DNS errors are **free**: they appear in the results with `notFound: true` or an `error` and are not charged. Parked domains and sites that answer every address with the same page count as no contact page, so they are free too. Duplicates (`acme.com`, `www.acme.com`, `http://acme.com`) are checked once, and entries that are not a domain or URL get a free `error` row. The free Apify plan's monthly credit covers about 1,500 sites with a form found.

### Input

```json
{
    "domains": ["wpforms.com", "chlandscaping.net", "typeform.com"],
    "maxPagesPerSite": 6,
    "maxConcurrency": 20,
    "proxyConfiguration": { "useApifyProxy": true }
}
```

### Output

```json
{
    "inputUrl": "example.com",
    "domain": "example.com",
    "contactPageUrl": "https://www.example.com/contact/",
    "hasForm": true,
    "formProvider": "Gravity Forms",
    "embedType": "native",
    "formAction": "https://www.example.com/contact/",
    "formMethod": "POST",
    "fieldCount": 11,
    "requiredFields": ["input_4.3", "input_4.6", "input_16", "input_6", "input_2", "input_10"],
    "hasCaptcha": true,
    "captchaType": "Turnstile",
    "forms": [{ "provider": "Gravity Forms", "embedType": "native", "fields": [{ "name": "input_4.3", "type": "text", "label": "First", "required": true }] }],
    "note": null,
    "notFound": false,
    "error": null
}
```

A JavaScript embed looks like this: `"hasForm": true, "formProvider": "Typeform", "embedType": "script", "fieldCount": 0, "note": "Fields not listed: the Typeform form is drawn by JavaScript ..."`.

Download the dataset as JSON, CSV, Excel or HTML, or read it through the Apify API.

### Tips

- **JavaScript embeds have no field list.** HubSpot, Typeform, Jotform scripts, Wix, Squarespace and similar forms are built in the visitor's browser, so their fields are not in the page HTML. The actor still reports `hasForm: true`, the provider and the embed type, with `fields` empty and a `note` saying so. Native HTML forms (Contact Form 7, Gravity Forms, WPForms, Formspree, Elementor and hand-written forms) come with full fields.
- **Captchas are detected, never solved.** The flag tells you a person will need to complete the form.
- If many sites in your list return a block error, switch the proxy to residential.

### FAQ

#### Does it return emails or phone numbers?

No. Use [Company Contact Finder](https://apify.com/tenfoldfleet/company-contact-finder) for emails, phones and social profiles.

#### Does it fill in or submit forms?

No. It only reads public pages and describes the forms on them.

#### Why is a site marked notFound when it clearly has a way to get in touch?

Some sites only offer a chat widget, an email link or a form behind a button that loads it later. If no contact page and no form is in the HTML, the row is free.

#### Can I call it from code or an AI agent?

Yes. Use the Apify API, the Apify MCP server, or integrations such as Make, Zapier and n8n.

### Disclaimer

The actor reads publicly available web pages only. It does not log in, solve captchas or submit forms. Make sure your use of the results, including any outreach through contact forms, complies with applicable laws such as GDPR and anti-spam rules, and with each website's terms.

### More tools from Tenfold Fleet

| Actor | Output |
|---|---|
| [ALDI Australia Scraper - AU Products, Unit Prices & Catalogue](https://apify.com/tenfoldfleet/aldi-australia-scraper) | product |
| [Alibaba Image Search - Reverse Lookup of Suppliers by Photo](https://apify.com/tenfoldfleet/alibaba-image-search) | matched product |
| [Alibaba Products Scraper: Wholesale Suppliers, MOQ, Price Tiers](https://apify.com/tenfoldfleet/alibaba-products-scraper) | product |
| [AliExpress Reviews Scraper: Product Feedback & Photos Monitor](https://apify.com/tenfoldfleet/aliexpress-reviews-scraper) | review |
| [AliExpress Keyword Scraper - Exact Sold Counts by Search Term](https://apify.com/tenfoldfleet/aliexpress-search-scraper) | product |
| [Amazon Bestsellers Tracker: New Releases & Rank Changes](https://apify.com/tenfoldfleet/amazon-bestsellers-tracker) | ranked product |
| [Amazon Product Scraper - Details, Prices & Search by ASIN](https://apify.com/tenfoldfleet/amazon-product-scraper) | product |
| [Applicant Tracking Jobs Scraper - Greenhouse, Lever & 6 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | job posting |
| [Audio Transcription: MP3 & Video Files to Text, SRT, VTT](https://apify.com/tenfoldfleet/audio-transcription) | audio minute transcribed |
| [Backlinks Checker - Referring Domains, Anchors & Domain Rank](https://apify.com/tenfoldfleet/backlinks-checker) | backlink |
| [BBB Scraper: Business Leads, Ratings & New Reviews](https://apify.com/tenfoldfleet/bbb-scraper-leads-reviews) | business |
| [Bilibili Scraper - Videos, Comments, Danmaku & Search](https://apify.com/tenfoldfleet/bilibili-scraper) | video or comment |
| [Businesses Without Websites - Local Leads with Phone & Rating](https://apify.com/tenfoldfleet/businesses-without-websites) | lead |
| [Coles Product Scraper - Australian Supermarket Prices & Deals](https://apify.com/tenfoldfleet/coles-product-scraper) | product |
| [Contact Details Scraper - One Lead Record per Company Website](https://apify.com/tenfoldfleet/company-contact-finder) | website with contacts |
| [CutShort Jobs Scraper - Startup Roles with INR Salary Ranges](https://apify.com/tenfoldfleet/cutshort-jobs-scraper) | job listing |
| [Facebook Ads Library Scraper for Marketers](https://apify.com/tenfoldfleet/facebook-ads-library-scraper) | ad |
| [Facebook Page Contact Finder - Business Leads from Page Links](https://apify.com/tenfoldfleet/facebook-page-contact-finder) | page with contact details |
| [Facebook Reels Scraper: Views & Captions Monitor for Any Page](https://apify.com/tenfoldfleet/facebook-reels-scraper) | reel |
| [Foundit Jobs Monitor: India, Singapore & Malaysia Jobs Scraper](https://apify.com/tenfoldfleet/foundit-jobs-monitor) | job listing |
| [Funding Rounds Scraper - Recently Funded Companies & Investors](https://apify.com/tenfoldfleet/funding-rounds-scraper) | funding round |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | ad |
| [Google AI Overviews Checker - Citations & Domain Tracker](https://apify.com/tenfoldfleet/google-ai-overviews-checker) | keyword checked |
| [Google Flights Scraper - All Fares per Route & Date (API)](https://apify.com/tenfoldfleet/google-flights-scraper) | route search |
| [Google Hotels Scraper - Nightly Prices, Stars & Booking Sites](https://apify.com/tenfoldfleet/google-hotels-scraper) | hotel |
| [Google for Jobs Scraper - Openings by City, Pay & Job Board](https://apify.com/tenfoldfleet/google-jobs-scraper) | job listing |
| [Google Keyword Planner Alternative - Ideas, Bids & Volume](https://apify.com/tenfoldfleet/google-keyword-planner) | keyword idea |
| [Google Maps Extractor - Business Leads, Phones & Websites](https://apify.com/tenfoldfleet/google-maps-extractor) | place |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | article |
| [Google Travel Hotel Rate Tracker - OTA Prices for Every Night](https://apify.com/tenfoldfleet/google-travel-hotel-rate-tracker) | offer |
| [Search Trends by Region & Time - Google Trends Data Scraper](https://apify.com/tenfoldfleet/google-trends-scraper) | keyword |
| [Hirist Jobs Scraper: India Tech Jobs with New-Job Monitor](https://apify.com/tenfoldfleet/hirist-jobs-scraper) | job listing |
| [IIMJobs Jobs Scraper: Search & Monitor Management Roles](https://apify.com/tenfoldfleet/iimjobs-jobs-scraper) | job listing |
| [India Jobs Feed: Hirist, IIMJobs, Foundit, Instahyre & Cutshort](https://apify.com/tenfoldfleet/india-jobs-feed) | job listing |
| [Instagram Reels Analytics - Profile Reel Plays, Likes, Comments](https://apify.com/tenfoldfleet/instagram-reels-analytics) | reel |
| [Instagram Reels Search - Keyword to Top Reels, Plays & Creators](https://apify.com/tenfoldfleet/instagram-reels-search) | reel |
| [Instagram Reels Transcript - Speech to Text for Public Reels](https://apify.com/tenfoldfleet/instagram-reels-transcript) | reel transcript |
| [Instahyre Jobs Monitor: New Tech Jobs in India by Skill](https://apify.com/tenfoldfleet/instahyre-jobs-monitor) | job listing |
| [Keyword Ideas & Related Keywords - Difficulty, Volume & CPC](https://apify.com/tenfoldfleet/keyword-ideas) | keyword idea |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | keyword with data |
| [Likee Scraper - Creators by Country, Video Views & Likes](https://apify.com/tenfoldfleet/likee-scraper) | video |
| [LinkedIn Ads Library Scraper - Competitor Ad Copy & Targeting](https://apify.com/tenfoldfleet/linkedin-ad-library-scraper) | ad |
| [LinkedIn Company Posts Monitor: New Posts, No Login](https://apify.com/tenfoldfleet/linkedin-company-posts-monitor) | post |
| [LinkedIn Company Scraper: Firmographics & Recent Posts](https://apify.com/tenfoldfleet/linkedin-company-scraper) | company |
| [Naver Shopping Scraper - Keyword Rank, Prices, Ads & Malls](https://apify.com/tenfoldfleet/naver-shopping-scraper) | product |
| [Pinterest Search Scraper: Pins, Promoted Ads & Shop Trends](https://apify.com/tenfoldfleet/pinterest-search-scraper) | pin |
| [Podcast Transcription: Episodes to Text, SRT & Monitor](https://apify.com/tenfoldfleet/podcast-transcription) | audio minute transcribed |
| [Reddit Brand Monitoring - Keyword Alerts for Posts & Comments](https://apify.com/tenfoldfleet/reddit-brand-monitoring) | mention |
| [Reddit Post Comments Export: Threads to JSON & CSV](https://apify.com/tenfoldfleet/reddit-post-comments-export) | comment |
| [Remote Job Board Scraper - Remote Jobs Aggregator, 7 Sites](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | unique remote job |
| [Reverse Image Search - Find Every Site Using a Photo](https://apify.com/tenfoldfleet/reverse-image-search) | image searched |
| [SEEK Jobs Scraper - Salaries & Hiring Across 8 APAC Job Boards](https://apify.com/tenfoldfleet/seek-job-scraper) | job listing |
| [Semrush API Domain Traffic: Visits, Authority Score, AI Traffic](https://apify.com/tenfoldfleet/semrush-api-domain-traffic) | domain |
| [SEO Agent - AI Keyword Research & Competitor Reports](https://apify.com/tenfoldfleet/seo-agent) | research report |
| [SEO Crawler - Technical SEO Audit Tool & On-Page Checker](https://apify.com/tenfoldfleet/seo-audit-tool) | page audit |
| [SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap](https://apify.com/tenfoldfleet/seo-competitor-keywords) | keyword |
| [Shopify Inventory Scraper - SKUs, Variants & In-Stock Status](https://apify.com/tenfoldfleet/shopify-products-scraper) | product |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | shopify store |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | url |
| [Stock Photos & Videos Scraper for Pexels](https://apify.com/tenfoldfleet/stock-photos-scraper) | media item |
| [Website Built With Checker - Find Any Site's CMS & Tech Stack](https://apify.com/tenfoldfleet/tech-stack-detector) | website |
| [Telegram Keyword Search Monitor - New Mentions in Channels](https://apify.com/tenfoldfleet/telegram-keyword-search-monitor) | matching message |
| [Threads Search - Keyword & Profile Posts Scraper (No Login)](https://apify.com/tenfoldfleet/threads-search) | post |
| [TikTok Ads Library Scraper: Competitor Ads in Europe](https://apify.com/tenfoldfleet/tiktok-ads-library-scraper) | ad |
| [TikTok Transcripts - Captions or Speech to Text for Any Video](https://apify.com/tenfoldfleet/tiktok-transcripts) | video transcript |
| [HTML to Text & URL to Markdown - LLM Ready Web Content](https://apify.com/tenfoldfleet/url-to-markdown) | page |
| [Website Traffic Checker - Bulk Domain Traffic Estimate](https://apify.com/tenfoldfleet/website-traffic-checker) | domain with traffic data |
| [WeChat Official Account Articles - Keyword Search to Markdown](https://apify.com/tenfoldfleet/wechat-official-account-articles) | article found |
| [Weibo Scraper - Comment Threads, Hot Search Ranks & User Stats](https://apify.com/tenfoldfleet/weibo-scraper) | comment |
| [Woolworths Product Scraper - AU Shelf Prices, Specials & GTINs](https://apify.com/tenfoldfleet/woolworths-product-scraper) | product |
| [Workday Jobs Scraper - myworkdayjobs.com API with Salary](https://apify.com/tenfoldfleet/workday-jobs-scraper) | job posting |
| [Yahoo Finance Scraper - Quotes, History, Fundamentals & News](https://apify.com/tenfoldfleet/yahoo-finance-scraper) | ticker row |
| [YouTube Channel Email Scraper - Creator Contact Extractor](https://apify.com/tenfoldfleet/youtube-channel-email-scraper) | channel with email |
| [YouTube Livestream & Channel Scraper - Videos, Likes & Stats](https://apify.com/tenfoldfleet/youtube-channel-scraper) | video |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | comment |
| [YouTube Search Scraper: Keyword Video & Shorts Monitor](https://apify.com/tenfoldfleet/youtube-search-scraper) | search result |
| [YouTube Shorts Analytics Scraper - Views, Likes & Hashtags](https://apify.com/tenfoldfleet/youtube-shorts-scraper) | short |
| [YouTube Captions Downloader - Transcript & Subtitles Scraper](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | transcript |

# Actor input Schema

## `domains` (type: `array`):

Websites to check. Bare domains (acme.com) or full URLs (https://www.acme.com). One site = one result row. Free Apify plan: the free monthly credit covers roughly 1,500 sites with a form found.

## `maxPagesPerSite` (type: `integer`):

Besides the homepage, how many candidate contact pages to load: links from the menu and footer, then /contact, /contact-us and /get-in-touch, then contact pages listed in sitemap.xml. 6 is enough for almost every site.

## `maxConcurrency` (type: `integer`):

How many sites to check in parallel.

## `proxyConfiguration` (type: `object`):

Apify datacenter proxy by default. Switch to residential proxy only if many sites block you.

## Actor input object example

```json
{
  "domains": [
    "wpforms.com",
    "chlandscaping.net",
    "typeform.com"
  ],
  "maxPagesPerSite": 6,
  "maxConcurrency": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "domains": [
        "wpforms.com",
        "chlandscaping.net",
        "typeform.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/contact-form-finder").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "domains": [
        "wpforms.com",
        "chlandscaping.net",
        "typeform.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/contact-form-finder").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "domains": [
    "wpforms.com",
    "chlandscaping.net",
    "typeform.com"
  ]
}' |
apify call tenfoldfleet/contact-form-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tenfoldfleet/contact-form-finder"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/lvXq3P5EG9aX8BbtG/builds/5WpLSqYEj0wi7TjDu/openapi.json
