# Site Contacts Extractor — Company Website to Contact Info JSON

> Site Contacts Extractor — Company Website to Contact Info JSON is a paid API for AI agents from freetier-agent-api.pages.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-30).

Scrapes a company website and returns structured contact data including emails, phone numbers, social profiles, VAT/company IDs, and address.

## Facts

- Endpoint: GET https://freetier-agent-api.pages.dev/api/site-contacts?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/site-contacts-extractor-company-website-to-contact-info-json-849bdabd
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_v7Cola-o8qgMeBRYC0We3

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 site-contacts-extractor-company-website-to-contact-info-json-849bdabd
```

Example prompt: Can you pull all the contact info for tryg.dk — emails, phone numbers, social profiles, and any VAT or company IDs you can find on their website? Use DK as the default phone country.

## When to prefer this

Choose this endpoint when you need structured contact data (emails, phones, social profiles, VAT IDs) scraped directly from a live company website, without needing a signup or API key. Ideal for agent-driven lead enrichment, supplier lookup, or business intelligence workflows that pay per call via x402/USDC. Prefer this over static business databases when you need fresh, page-sourced data rather than cached records.

## Known failure modes

- Website blocks scraping via robots.txt — returned in robotsBlocked array
- No contact info found if site is heavily JavaScript-rendered or gated
- Phone numbers may fail validation if country code is incorrect or missing
- Emails dropped if domain has no MX record (emailsDroppedNoMx > 0)
- Request fails if URL parameter is missing or malformed
- Payment failure if USDC balance is insufficient for x402 microtransaction

## How this service works

Invoice-to-JSON, on-chain tools (transaction explainer + payment check, wallet profile, contract ABI, ERC-20 token risk), company contacts and web-to-RAG for AI agents. Pay per call with x402 (USDC on Base). No signup, no API key.

## Output

A JSON object containing: company name, domain, description, language, emails (validated against MX records), phone numbers in E.164 and national formats with confidence scores, postal address, organization type, social profiles (LinkedIn, Facebook, YouTube, Instagram), VAT/company IDs, pages fetched, robots.txt blocks, and metadata like fetchedAt timestamp. Counts of dropped/omitted contacts are also included.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "company website"
      },
      "country": {
       "type": "string",
       "description": "default phone country, ISO-2, default DK"
      }
     }
    }
   }
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "url": {
       "type": [
        "string",
        "null"
       ]
      },
      "name": {
       "type": [
        "string",
        "null"
       ]
      },
      "note": {
       "type": [
        "string",
        "null"
       ]
      },
      "domain": {
       "type": [
        "string",
        "null"
       ]
      },
      "emails": {
       "type": [
        "array",
        "null"
       ]
      },
      "phones": {
       "type": "array",
       "items": {
        "type": [
         "object",
         "null"
        ]
       }
      },
      "address": {},
      "orgType": {},
      "sources": {
       "type": "array",
       "items": {
        "type": [
         "object",
         "null"
        ]
       }
      },
      "language": {
       "type": [
        "string",
        "null"
       ]
      },
      "fetchedAt": {
       "type": [
        "string",
        "null"
       ]
      },
      "legalName": {},
      "description": {
       "type": [
        "string",
        "null"
       ]
      },
      "pagesFetched": {
       "type": "array",
       "items": {
        "type": [
         "object",
         "null"
        ]
       }
      },
      "robotsBlocked": {
       "type": [
        "array",
        "null"
       ]
      },
      "socialProfiles": {
       "type": "object",
       "properties": {
        "youtube": {
         "type": [
          "array",
          "null"
         ]
        },
        "facebook": {
         "type": [
          "array",
          "null"
         ]
        },
        "linkedin": {
         "type": [
          "ar
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://tryg.dk/",
  "name": "Tryg",
  "note": "Phone validation in this API uses a lighter rule set than the Apify Actor (no libphonenumber).",
  "domain": "tryg.dk",
  "emails": [],
  "phones": [
   {
    "e164": "+4532736870",
    "type": null,
    "country": null,
    "foundOn": [
     "https://tryg.dk/kundeservice/hjaelp-til-min-side"
    ],
    "sources": [
     "text"
    ],
    "national": "+45 32 73 68 70",
    "validated": false,
    "confidence": "medium"
   }
  ],
  "address": null,
  "orgType": null,
  "sources": [
   {
    "url": "https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/",
    "name": "Cloudflare DNS over HTTPS (live MX/A/AAAA lookup)"
   }
  ],
  "language": "da",
  "fetchedAt": "2026-10-24T18:11:07.639Z",
  "legalName": null,
  "description": "Tryg er Danmarks største forsikringsselskab. Find din kommende forsikring her. Få masser af gratis fordele med EkstraTryghed.",
  "pagesFetched": [
   {
    "url": "https://tryg.dk/",
    "status": 200
   },
   {
    "url": "https://tryg.dk/kundeservice",
    "status": 200
   }
  ],
  "robotsBlocked": [],
  "socialProfiles": {
   "youtube": [
    "https://www.youtube.com/user/TrygDanmark",
    "https://www.youtube.com/user/TrygForsikringNorge"
   ],
   "facebook": [
    "https://www.facebook.com/TrygDanmark",
    "https://www.facebook.com/TryggHansa"
   ],
   "linkedin": [
    "https://www.linkedin.com/company/tryg",
    "https://www.linkedin.com/company/trygg-hansa"
   ],
   "instagram": [
    "https://www.instagram.com/tryg_forsikring",
    "https://www.instagram.com/trygg_hansa"
   ]
  },
  "vatOrCompanyIds": [
   "DK-CVR 24260666"
  ],
  "emailsDroppedNoMx": 0,
  "phonesOmittedAsLikelyPersonal": 0,
  "personalOrUnknownEmailsOmitted": 0
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/site-contacts-extractor-company-website-to-contact-info-json-849bdabd/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from freetier-agent-api.pages.dev](https://www.zero.xyz/host/freetier-agent-api.pages.dev/llms.txt)
