---
title: "Contact API — emails, socials and phones for a website"
method: POST
path: "/contact"
tags: ["Web"]
---

# Contact API — emails, socials and phones for a website

`POST /contact`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/contact`
- Auth: API key in header `x-api-key`

Crawls a public website URL (homepage plus contact/about/team/imprint pages) and returns its public business contact details: emails — each tagged with a verification `status` (`verified`, `risky`, `unverified`, `invalid`) and a `type` (`generic`, `role`, `personal`) — plus social-media profiles and phone numbers. Intended for authorized public-business data only.

## Headers

- `x-api-key` string, required

## Request body

- ContactContactRequest
  - `independents_only` boolean: IndependentsOnly, when true, returns just the classification (no crawl) for any non-independent site (chain/social/builder/directory) — a cheap filter.
  - `max_pages` integer
  - `url` string, required
  - `verify` boolean
  - `verify_limit` integer: VerifyLimit caps how many discovered emails get the costly SMTP mailbox check when verify is on: the first N (in crawl order — contact/about pages first) are SMTP-verified, the rest are returned syntax+MX-only (`unverified`). 0/omitted = verify every email (up to maxEmails). The free preview sets a small cap to bound SMTP probe volume and latency for anonymous callers.

## Response `200`

OK

- ContactContactResponseDoc
  - `code` integer
  - `data` ContactContactResult
    - `crawl_status` 'ok' | 'blocked' | 'unreachable': CrawlStatus explains an empty result: "ok" (read fine, nothing public to find), "blocked" (an anti-bot wall stopped the read), or "unreachable" (the homepage couldn't be fetched).
    - `crawled_pages` string[]
    - `domain` string
    - `domain_type` 'independent' | 'chain' | 'social' | 'builder' | 'directory'
    - `emails` ContactEmailContact[]
      - `address` string
      - `source_page` string
      - `status` 'verified' | 'risky' | 'unverified' | 'invalid'
      - `type` 'generic' | 'role' | 'personal'
    - `phones` ContactPhoneContact[]
      - `number` string
      - `source_page` string
    - `socials` ContactSocialProfile[]
      - `handle` string
      - `network` string
      - `url` string
    - `website` string
  - `msg` string

## Other responses

- `400`: Invalid input or missing URL
- `429`: Rate limit exceeded
- `500`: Internal server error during contact extraction

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/afac9b012a27?raw)
