Back to Website to Company data

API documentation

Website to Company data REST API

Extract company profile fields, categorized emails, categorized phones, and contact people from a business website using one token-based endpoint.

Current plan Free 25 websites lifetime
Remaining 25 websites lifetime
Used 0 of 25
Reset Never No reset

Endpoint

Extract one website

GET
https://ai.mihajlo.mk/api/website-to-company-data/v1/extract?website=https://example.com&token={serviceTokenHere}
websiteRequired HTTP/HTTPS website URL or domain. If the scheme is omitted, HTTPS is used.
tokenRequired Website to Company data service token from this page.

Live tester

Test an API call

Login to run live extraction calls from this documentation page. The endpoint, schema, and errors are visible without login.

Login to test API

JSON response

Response preview

{
  "ok": true,
  "service": "website-to-company-data",
  "version": "v1",
  "extraction_source": "ai_forced",
  "company": {
    "name": { "value": "Example Company" },
    "industry": { "value": "Software / SaaS" },
    "address": {
      "raw": null,
      "city": null,
      "location": { "latitude": null, "longitude": null }
    }
  },
  "contacts": {
    "emails": {
      "sales": [
        {
          "email": "[email protected]",
          "contact_name": "Sales team",
          "suggested_salutation": "Hello Sales team,",
          "addressing": {
            "type": "department",
            "contact_name": "Sales team",
            "suggested_salutation": "Hello Sales team,"
          }
        }
      ],
      "support": [], "info": [], "billing": [], "careers": [], "press": [], "legal": [], "technical": [], "general": [], "other": []
    },
    "phones": { "sales": [], "support": [], "info": [], "billing": [], "careers": [], "press": [], "legal": [], "technical": [], "general": [], "other": [] },
    "contact_persons": { "sales": [], "support": [], "info": [], "billing": [], "careers": [], "press": [], "legal": [], "technical": [], "general": [], "other": [] }
  }
}

Stable schema

Fixed categories for easy parsing

Each contact group returns all category keys, even when there are no values. Unknown or unclear contacts are placed under general or other.

sales support info billing careers press legal technical general other

Successful response

Quality and crawl metadata

{
  "quality": {
    "confidence": 76,
    "used_ai": true,
    "extraction_mode": "ai_forced",
    "has_company_name": true,
    "has_valid_email": true
  },
  "crawl": {
    "depth": 2,
    "pages_visited": [
      { "url": "https://company.com/", "status_code": 200 }
    ],
    "errors": [],
    "blocked": []
  }
}

Error examples

Precise error codes

400 missing_websiteThe website query parameter is empty.
400 invalid_urlThe URL is not HTTP/HTTPS or cannot be parsed.
400 blocked_hostPrivate, local, or reserved hosts are blocked.
401 invalid_tokenThe token is missing, revoked, expired, or belongs to another service.
429 quota_exceededThe active plan quota is exhausted.
424 ai_extraction_failedThe website was fetched, but the forced AI extraction did not return a usable structured result.
424 website_blockedThe website returned 401, 403, or 429 and could not be parsed.
424 website_unreachableNo usable HTML page could be fetched.
422 insufficient_dataThe crawler and AI extraction could not produce a company name or valid email.

Upgrade

Need more website extractions?

Choose a larger plan when your lead enrichment, CRM import, or aggregator volume grows.

View upgrade plans