Keencrest guides

Find contact forms on a list of websites: contact page, form type, captcha

By Keencrest · 2026-11-01

Some sites publish no email at all, only a contact form. If you keep a list of websites for outreach, support routing, a directory or a compliance review, the first question is simple: where is the contact page, and what kind of form is on it? Opening 300 sites by hand takes hours. This guide shows a pay-per-site way to get the answer for a list in one run.

What you get for each site

FieldMeaning
contactPageUrlThe page that holds the contact route; contactPageSource says how it was found (a link, a guess like /contact, or the home page itself)
formKindThe form provider when it is recognised (21 providers, including hosted form builders and WordPress form plugins), or html for a form the site built itself
formFor site-built forms: the action, the method and the visible field names and types
captchaKindsreCAPTCHA, hCaptcha, Turnstile or other, when one is on the page
mailtoPresent, telLinkPresentTrue or false only. The Actor does not return the address or number
statusfound, no_contact_page, unreachable, blocked, robots_blocked, invalid_input or opted_out, with a failureReason

What it does not do

A real run, in aggregate

On 2 November 2026 we ran it on five well-known company websites (not named here). All five came back found: three had a form in the page HTML (formKind html), one of them also recognised as a hosted form provider with a reCAPTCHA on the page; one had a mailto link on its contact page; and one had a contact page whose form is built by JavaScript after load, so the page was found but formKind was empty. That last case is the main limit: the Actor reads the HTML a plain request receives and does not run a browser. The five sites cost $0.00051 in total.

On our own guides site, which has no contact page, the row looks like this, and costs nothing:

{"domain": "keencrest-guides.web.app", "status": "no_contact_page", "billed": false,
 "contactPageUrl": null, "formFound": false, "formKind": null,
 "captchaPresent": false, "mailtoPresent": false, "pagesFetched": 4}

Contact forms for sites with no email

If you are already looking for emails, you do not need a second run for this: Website Contact Details Scraper returns the same two pointers, contactPageUrl and contactFormKind, at no charge on every row. In a run on 124 small-business websites on 2 November 2026, 38 had no email, and 23 of those 38 came back with their contact-form URL and kind (22 site-built forms, 1 Google Form). It never submits a form, and a row without an email is not billed. See find business emails from a list of websites.

Price

$0.001 per site where a contact page or a home-page form is found. Sites with none, unreachable, blocked or invalid ones are free. 1,000 sites with a 70% hit rate would cost about $0.70.

Using the result

Knowing where a form is does not make it fine to fill it in bulk. Many sites forbid automated submissions in their terms, and unsolicited messages are regulated differently by country. Use the list to route a person to the right page, to audit your own sites, or to decide whom to contact by hand, and check the rules for each country you write to.

How to run it

  1. Put the websites in a list, one address per line.
  2. Paste them into the Actor's input and run. Start with 10 sites.
  3. Filter on status = found, then group by formKind and captchaPresent.

Try it: Contact Page & Form Finder on Apify. $0.001 per site where a contact page is found; the rest are free. The Apify free plan includes monthly credit, so a test run costs nothing out of pocket.

Related guides

All Keencrest guides