# Scrape Contacts from Website

> Scrape Contacts from Website is a paid API for AI agents from agents.openwebninja.com, paid per call via MPP, price unknown, status unknown (last checked 2026-10-14).

Scrapes emails, phone numbers, and social media profile links from one or more website root domains in a single batch request.

## Facts

- Endpoint: GET https://agents.openwebninja.com/website-contacts-scraper/scrape-contacts?utm_source=zero.xyz
- Price: price unknown
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-14
- Activations on Zero: 0
- Provider: agents.openwebninja.com
- Website: https://agents.openwebninja.com
- Canonical page: https://www.zero.xyz/c/agents-openwebninja-com-scrape-contacts-from-website-3c75fade
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_E5hx30t2YJGifWtOs4-OZ

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agents-openwebninja-com-scrape-contacts-from-website-3c75fade
```

Example prompt: Can you scrape all the contact emails, phone numbers, and social media profiles from wsgr.com and acme.com — and only return emails that actually match those domains?

## When to prefer this

Choose this endpoint when you need to discover publicly listed contact information (emails, phone numbers, social profiles) directly from one or more company websites at scale. It is especially useful for lead generation, sales prospecting, or due diligence where you need structured contact data from up to 20 domains in a single API call. Prefer this over general search APIs when you want contact-specific extraction tied to a root domain rather than broad web search results.

## Known failure modes

- Domain has no publicly listed emails or contacts — returns empty arrays
- Invalid or unreachable domain — may return error status or empty results
- Rate limit or quota exhaustion — returns 402 or quota error
- Batch exceeds 20 domains — request rejected
- External matching disabled by default — contacts outside website and social profiles won't appear unless external_matching=true
- Emails from third-party domains returned by default if match_email_domain is not set to true

## How this service works

Scrape emails, phone numbers, and social profile links from a website root domain. Supports batching of up to 20 domains in a single request.  
  Note that by default, the emails returned by the endpoint are not restricted to match the website domain (after the "@"), to restrict emails to the website domain, set the match_email_domain parameter to true (or 1).  
  The endpoint also supports external matching of contacts (outside the company website and social profiles) by setting the  external_match parameter to true (or 1).

## Output

Returns a structured JSON object per queried domain containing: all discovered email addresses with their source URLs, phone numbers with source URLs, and URLs or handles for up to 9 social platforms (LinkedIn, Twitter/X, Facebook, Instagram, GitHub, YouTube, TikTok, Pinterest, Snapchat). Also includes request status and a unique request ID.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "query"
 ],
 "properties": {
  "query": {
   "type": "string",
   "example": "wsgr.com",
   "description": "Domain from which to scrape emails and contacts (e.g. wsgr.com).  \n  Accepts any valid url and uses its root domain as a starting point for the extraction.  \n  Support batching of up to 20 domains in a single request, separated by comma (e.g. wsgr.com,other.com).  \n  Please note that each domain in the request will consume a request credit from the quota."
  },
  "external_matching": {
   "type": "boolean",
   "default": false,
   "description": "Try to match any web source, in addition to website and social platforms."
  },
  "match_email_domain": {
   "type": "boolean",
   "default": false,
   "description": "Only return emails in the same domain like the one supplied with the query parameter."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "data": {
   "type": "array",
   "items": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "description": "The search query used"
     },
     "domain": {
      "type": "string",
      "description": "The domain associated with the query"
     },
     "emails": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "value": {
         "type": "string",
         "description": "The email address found"
        },
        "sources": {
         "type": "array",
         "items": {
          "type": "string"
         },
         "description": "List of source URLs where this email was found."
        }
       }
      }
     },
     "github": {
      "type": "string",
      "description": "GitHub profile URL (or null if not found)"
     },
     "tiktok": {
      "type": "string",
      "description": "TikTok profile URL (or null if not found)"
     },
     "twitter": {
      "type": "string",
      "description": "Twitter/X profile URL (or null if not found)"
     },
     "youtube": {
      "type": "string",
      "description": "YouTube channel URL (or null if not found)"
     },
     "facebook": {
      "type": "string",
      "description": "Facebook profile URL (or null if not found)"
     },
     "linkedin": {
      "type": "string",
      "description": "LinkedIn profile URL (or null if not found)"
     },
     "snapchat": {
      "type": "string",
      "description": "Snapchat username (or null if not found)"
     },
     "instagram": {
      "type": "string",
      "description": "Instagram profile URL (or null if not found)"
     },
     "pinterest": {
      "type": "string",
      "description": "Pinterest profile URL (or null if not found)"
     },
     "phone_numbers": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "value": {
         "type": "string",
         "description": "The phone number found"
        },
        "sources": {
         "type": "array",
         "items": {
          "type": "string"
         },
         "description": "List of source URLs where this phone number was found."
        }
       }
      }
     }
    }
   }
  },
  "status": {
   "type": "string",
   "description": "The status of the API response (e.g., success/error)"
  },
  "request_id": {
   "type": "string",
   "description": "Unique identifier for the API request"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-scrape-contacts-from-website-3c75fade/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.openwebninja.com](https://www.zero.xyz/host/agents.openwebninja.com/llms.txt)
