Contact Page & Form Finder: Contact Form URL, Captcha
Pricing
$1.00 / 1,000 contact page founds
Contact Page & Form Finder: Contact Form URL, Captcha
Find the contact page and contact form of any list of websites: contact page URL, form kind (HubSpot, Typeform, Google Forms, Jotform, WordPress plugins or plain HTML), form fields, captcha present, mailto present. Never submits forms; no emails returned. $1 per 1,000 sites with a contact page.
Pricing
$1.00 / 1,000 contact page founds
Rating
0.0
(0)
Developer
Data Gleaner
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Security
Limited permissionsShare
Contact Page & Form Finder: Contact Form URL, Form Kind, Captcha
Give it a list of websites; get back each site's contact page URL, what kind of contact form it uses (HubSpot, Typeform, Google Forms, Jotform, WordPress form plugins or a plain HTML form), whether a captcha guards it, and whether the site shows a mailto link. $1 per 1,000 sites where a contact page is found; everything else is free.
It reads pages only. It never submits a form, and it never returns an email address or a phone number.
What it does
For each website it reads the home page, follows the links that name a contact page ("Contact", "Contact us", "Get in touch", "Kontakt", "Contacto", "お問い合わせ" and about 40 more), and if none are linked it tries a few common paths such as /contact. On the contact page it reports:
contactPageUrl: the contact page (or the home page, when its own form is the only contact form)formFound,formKind,formKinds: whether there is a contact form and which tool renders it:hubspot,typeform,google_forms,jotform,microsoft_forms,tally,formspree,wufoo,formstack,cognito_forms,zoho_forms,marketo,pardot,contact_form_7,wpforms,gravity_forms,ninja_forms,elementor,webflow,squarespace,wix, orhtmlfor a site-built formform: for a site-built form, its action URL, method and visible fields (name, type, required), so you can map it in your own toolingcaptchaPresent,captchaKinds:recaptcha,hcaptcha,turnstile,friendly_captchaorothermailtoPresent,telLinkPresent: whether the contact or home page has a mailto: or tel: link (true/false only)otherContactPages: other contact pages found on the site (sales, support)statusandfailureReason:found,no_contact_page,unreachable,blocked,robots_blocked,invalid_inputoropted_out, with the reason
Search, login and newsletter-only forms are not counted as contact forms.
How it differs from Website Contact Details Scraper
This Actor and our Company Contact Details & Website Email Finder (website-contact-details-scraper) read the same kind of sites, but they answer different questions and bill different rows:
| Contact Page & Form Finder (this Actor) | Website Contact Details Scraper | |
|---|---|---|
| Question it answers | Where is the contact page, and what form is on it? | What are the company's emails, phones and social links? |
| Returns emails or phones | No, never (mailto/tel presence only) | Yes |
| Form kind, form fields, captcha | Yes | No |
| Billed rows | Sites with a contact page found, $0.001 | Sites with an email found, $0.002 |
| Pages per site | 2 on most sites (4 at most by default) | Up to 10 |
If you need the email addresses themselves, use Website Contact Details Scraper. If you need to know where and how a site takes contact requests, use this one.
Use cases
- Form-based outreach lists: sort a lead list into sites with a plain HTML form, a HubSpot form, a Typeform, or only a mailto link, before you choose a channel.
- Agency and CRO audits: see which prospects still run an unguarded form, or a form with no captcha, or no contact page at all.
- Martech research: count how many sites in a segment use HubSpot, Typeform, Jotform or Contact Form 7 for their contact form.
- Data cleaning: add a contact page URL column to a CRM export so reps land on the right page.
Input example
{"websites": ["stripe.com", "posthog.com", "https://mattermost.com", "www.jotform.com"],"maxPagesPerSite": 4,"maxConcurrency": 10}
Plain domains, www. hosts and full URLs all work. Duplicate domains are read once. An empty input runs a 2-site example and says so in the run's status message.
Output example
{"input": "www.jotform.com","website": "https://www.jotform.com/","domain": "jotform.com","status": "found","billed": true,"contactPageUrl": "https://www.jotform.com/contact/","contactPageSource": "link","contactPageTitle": "Contact Us | Jotform","otherContactPages": [],"formFound": true,"formKind": "jotform","formKinds": ["jotform", "html"],"form": {"action": "https://www.jotform.com/contact/", "method": "post", "fields": [{"name": "name", "type": "text", "required": true}]},"captchaPresent": true,"captchaKinds": ["recaptcha"],"mailtoPresent": false,"telLinkPresent": false,"pagesFetched": 2,"robotsBlocked": 0,"failureReason": null,"scrapedAt": "2026-11-02T03:20:00Z"}
Pricing
Pay per event: $0.001 per website where a contact page is found (contact-page-found), that is $1 per 1,000 found. Sites with no contact page, unreachable, blocked, robots-blocked and invalid sites are returned free. These prices are final.
Worked example: 1,000 websites, of which 780 have a contact page, 150 have none and 70 are unreachable, cost 780 x $0.001 = $0.78. Set "Maximum cost per run" in the run options to cap any run; the Actor stops cleanly when the cap is reached.
Limits
- Plain HTTP, no browser. A form that a page builds entirely in JavaScript after load can be missed (the page is still reported as the contact page when a link names it). Captchas loaded inside a hosted form's own iframe (inside a Typeform, for example) are not visible from the host page.
- A site that answers 403, 429, 503 or a bot challenge is reported as
blocked. It is retried once the same way after a pause, never through another IP, header set or browser. - robots.txt is binding: disallowed pages are not fetched (
robotsBlockedcounts them) and Crawl-delay is honoured. A site whose robots.txt disallows its home page isrobots_blocked. - Each site gets one request at a time and at most 45 seconds.
FAQ
Does it fill in or submit forms? No. It only makes GET requests to read pages. It never posts to a form.
Why no emails? This Actor maps contact channels, not people. mailtoPresent tells you a mailto link exists; use Website Contact Details Scraper if you need the address.
What counts as a contact page? A same-site page that a link names as a contact page, or a common contact path that loads and shows a form or a contact title. Pages on a subdomain count only when the link clearly names a contact page.
Can I feed it Google Maps or CRM results? Paste the websites into websites, or call it from an integration with your list.
Responsible use
This Actor reads publicly available pages, respects each site's robots.txt and identifies itself with an honest user agent (KeencrestBot). It returns no personal data: no names, emails or phone numbers. If you use the results to send messages through websites' contact forms, you are responsible for following the law that applies to you and to the recipient (anti-spam and e-marketing rules) and each site's own terms; many sites forbid unsolicited commercial messages through their forms.
Removal requests
A site owner who wants their site left out of this Actor's results can write to datagleaner@gmail.com with the domain; it is added to our shared removal list, and later runs return that site as opted_out without reading it.
Built and run by Keencrest (Data Gleaner on Apify). Crest, Keencrest's AI agent, maintains this Actor; the business is owner-operated.