MarketXY — API Docs
Get API key Try it live →

MarketXY API

Fresh domain, company, and network intelligence — through one API, JSON responses.

MarketXY's API gives you programmatic access to the same domain registration, WHOIS, DNS, SSL, hosting, technology, company-directory, and network data that powers marketxy.com. Every response is JSON. Every request is authenticated with a single API key. Start with the Universal Query API below, or jump straight to the live API Explorer to try a real request right now.

ⓘ
New here?Get your key at app.marketxy.com/api-usage/, then try it instantly in the API Explorer below — no code required.

Authentication

Every request requires an API key, passed as either an X-API-Key header or a Bearer token in Authorization — pick whichever your HTTP client supports.

curl — X-API-Key headerCopy
curl "https://api.marketxy.com/v4/query?type=domain&value=yahoo.com" \
  -H "X-API-Key: mxy_live_your_key_here"
curl — Bearer tokenCopy
curl "https://api.marketxy.com/v4/query?type=domain&value=yahoo.com" \
  -H "Authorization: Bearer mxy_live_your_key_here"
⚠
Keys are one-way hashedMarketXY never stores your raw key, only a hash of it — if you lose it, regenerate rather than requesting a recovery, since there is nothing to recover.

Base URL & environments

EnvironmentBase URLNotes
Productionhttps://api.marketxy.comReal data, real billing, real rate limits.

Rate limits & plans

Every request spends MarketXY Data Tokens from your plan. Data Tokens measure the amount and type of data a request returns — they are not AI/LLM tokens, cryptocurrency or credits — so a request that returns more data costs more. Each plan also has a daily and an hourly token budget and a per-second burst limit.

PlanPriceData Tokens / monthRequests / monthRequests / dayRequests / hourRequests / second
Free$01,000,0005,0005005001
Startup$1915,000,00010,0001,0001,0002
Enterprise$99100,000,000100,00010,00010,0005

These are the plans and numbers on the pricing page. Check your tokens, your daily and hourly budget and your burst limit anytime with GET /v4/api-plan/status — see Self-discovery endpoints.

Errors

The Universal Query API uses one consistent error shape:

Error response
{
  "success": false,
  "request_id": "req_0d42353593c8f850",
  "error": {
    "code": "UNKNOWN_INCLUDE_SECTION",
    "message": "Unknown section(s) in \"include\": company. Valid: whois, dns, ssl, hosting, technologies, social, scores, counts, misc, or \"all\"."
  }
}

Authentication errors (401) carry the same fields plus the older statusCode and message, kept for existing integrations:

401 response
{
  "statusCode": 401,
  "message": "Missing API key. Pass it as an 'X-API-Key' header (or 'Authorization: Bearer <key>').",
  "success": false,
  "request_id": "req_...",
  "error": {
    "code": "MISSING_API_KEY",
    "message": "Missing API key. Pass it as an 'X-API-Key' header (or 'Authorization: Bearer <key>')."
  }
}
StatuscodeMeaning
400 / 422MISSING_DATA_POINT, UNKNOWN_DATA_POINT, UNKNOWN_FIELD, UNKNOWN_INCLUDE_SECTION, COUNT_NOT_SUPPORTEDBad request — message names the exact problem.
401MISSING_API_KEY, INVALID_API_KEYMissing or invalid/revoked API key. The body also keeps the older statusCode and message fields.
402—Free trial expired.
403REMOVEDThis record has been removed and can no longer be shown.
404NOT_FOUNDNo record for this exact-lookup value.
429—Data Token budget or burst limit exceeded (scope field tells you which). Burst errors include a retry_after (seconds) and a matching Retry-After header.
500INTERNAL_ERRORServer-side error. Safe to retry.
503COUNT_TEMPORARILY_UNAVAILABLE, QUERY_TEMPORARILY_UNAVAILABLEA dependency was temporarily slow. Includes a retry_after (seconds) — safe to retry after that.

Pagination


Universal Query API

One endpoint, one shape, sixteen data points.

GET /v4/query is the fastest way to look up domain, company, email, ASN, or reverse/date-range data — pick a type, give a value, get JSON back.

QuickstartCopy
curl "https://api.marketxy.com/v4/query?type=domain&value=yahoo.com&include=whois,ssl" \
  -H "Authorization: Bearer mxy_live_your_key_here"
ⓘ
type vs data_pointBoth work identically — type is the newer, friendlier name; data_point still works unchanged for existing integrations.

API Explorer

Build a real request below and send it — this calls the live production API directly from your browser.

Stored only in this browser tab — never sent anywhere but api.marketxy.com. Get one at app.marketxy.com/api-usage/.
cURL
Response
curl "https://api.marketxy.com/v4/query?type=domain&value=yahoo.com" \ -H "Authorization: Bearer mxy_live_..."
Ready

All 16 data points

typekindDescriptionExample
domainexactEverything MarketXY has on one domain?type=domain&value=yahoo.com
emailexactPerson/company record by exact email, plus its domain[email protected]
asnexactASN registry info (name, org, IP ranges)?type=asn&value=AS15169
companysearchFuzzy search the company directory by name/website/phone?type=company&value=Microsoft
create_datereverseDomains created on a given day?type=create_date&value=2026-09-09
update_datereverseDomains updated on a given day?type=update_date&value=2026-09-09
expiry_datereverseDomains expiring on a given day?type=expiry_date&value=2026-09-09
registrarreverseDomains registered through a given registrar?type=registrar&value=GoDaddy
nameserverreverseDomains using a given name server?type=nameserver&value=ns1.example.com
mxreverseDomains using a given MX record?type=mx&value=mail.example.com
tldreverseDomains under a given TLD?type=tld&value=com
countryreverseDomains whose WHOIS registrant country matches?type=country&value=US
ipreverseDomains hosted on a given IPv4 address?type=ip&value=8.8.8.8
cmsreverseDomains using a given CMS?type=cms&value=WordPress
web_serverreverseDomains running a given web server?type=web_server&value=nginx
technologyreverseDomains using a given technology (substring match)?type=technology&value=React

Include sections (domain only)

SectionCovers
whoisRegistrant, registrar, create/update/expiry dates
dnsNameservers, A/MX/TXT records
sslCertificate issuer, subject, expiry
hostingHosting provider, IP, country
technologiesCMS, web server, detected tech stack
socialLinked social profiles
scoresMXY rank / overall score fields
countsSubdomain count, related-domain counts
miscRobots.txt, on-page emails/phones (masked), main country

Count mode

Add count=true to any reverse or search data point for a real match count with no rows fetched.

Response
{
  "success": true,
  "request_id": "req_b02c25ca454bac37",
  "data": { "query": { "type": "tld", "value": "com" }, "matched_count": 136703797 },
  "meta": { "data_point": "tld", "match_type": "reverse", "count_only": true }
}
⚠
Not valid on exact-lookup typescount=true on domain, email, or asn returns COUNT_NOT_SUPPORTED.

Response envelope

Success
{ "success": true, "request_id": "req_...", "data": { ... }, "meta": { ... } }
Error
{ "success": false, "request_id": "req_...", "error": { "code": "...", "message": "..." } }

Additional Data APIs

Beyond the Universal Query API, MarketXY exposes ~45 specialized routers under /v4/* — each authenticated and rate-limited the same way as /v4/query.

⚠
Endpoint status legendStableproduction-ready  ·  Betaavailable, still maturing  ·  Deprecateduse the Universal Query API instead. Full per-endpoint parameter reference is on the roadmap.

Company data

Base pathPurposeStatus
/v4/companyCompany lookup/search (older router)Stable
/v4/company2026Newer, larger dataset (272 collections, ~51M docs)Stable
/v4/company-databaseGlobal company directory — search by name/website/phone/countryStable
/v4/company-registryPer-country structured registries (Brazil CNPJ, India CIN, Canada, Australia ACN, US, and more)Stable
/v4/company-researchDeeper company research/profile dataBeta
/v4/company-enrichmentCross-references WHOIS + person registry by ?domain= and/or ?phone= — real WHOIS contact plus related contacts/domains for the company.Stable
/v4/lead-generationLead-generation queries over company/contact dataBeta

Domain intelligence

Base pathPurposeStatus
/v4/ (domain routes)Core domain profile endpoints (predates Universal Query)Stable
/v4/domain-life-cycleDomain lifecycle stage — registration date, expiry, redirect/blank-page status, government/educational/test TLD, blacklist status. GET ?domain=example.comStable
/v4/domain-score/{domain}Domain quality/trust score (path param, not ?domain=). Coverage is partial — many well-known domains have no score computed yet.Stable
/v4/overall-scoreComposite overall domain scoreBeta
/v4/domain-category/{domain}Domain's real business category (path param, not ?domain=), with rank within that category. Coverage is partial — many domains have no category assigned yet.Stable
/v4/domain-rating, /domain-rating-criteria, /domain-relation-rating, /category-ratingDomain/category rating systemBeta
/v4/categoryCategory directoryBeta

Network & infrastructure

Base pathPurposeStatus
/v4/asnASN/network registry lookups (legacy — prefer type=asn)Deprecated
/v4/hosting-providersHosting-provider market-share stats (legacy)Deprecated
/v4/hosting-market-shareReal hosting-provider market share, computed from a 493,658-domain sample resolved against real IP-range/ASN data.Stable
/v4/geoipIP-to-geolocation lookupsBeta
/v4/ipdb-registryIP address database / registryBeta
/v4/dnsDNS record lookups (legacy router)Stable
/v4/ssl-database/:fieldSSL certificate database — search one field (e.g. subjectOrganization, subjectCountry) with ?search=; the bare path answers 400 with the sub-routesStable

WHOIS & registry

Base pathPurposeStatus
/v4/whoisRaw WHOIS record lookups (legacy router)Stable
/v4/actesDirect access to the underlying actes2025 datasetStable
/v4/tldsTLD directory/statsStable
/v4/registrarsRegistrar directory/statsStable

Security & threat data

Base pathPurposeStatus
/v4/phishing-alertsPhishing-style look-alikes for one brand domain (brand name + a phishing keyword in the same domain name). GET ?domain=example.comStable
/v4/typosquat-domainsTyposquatting domain detection — real registered look-alikes of a brand domain, with first-found date and severity. GET ?domain=example.comStable
/v4/blacklisted/malwareIs this domain (or its own flagged subdomains) carrying the real Malware blacklist category? GET ?domain=example.comStable
/v4/blacklisted/fraudIs this domain (or its own flagged subdomains) carrying the real Fraud blacklist category? GET ?domain=example.comStable
/v4/blacklistedBlacklisted-domains databaseStable
/v4/email-domain-type/checkIs a domain disposable, a free email provider, or a company domain? GET ?domain=example.comStable
/v4/block-listBlock-list management/lookupBeta

Full request/response detail for the two Stable security endpoints — the other rows above are Beta and not yet documented per-parameter. A browsable landing page for domain classification is also at /email-domain-type/.

Email Domain Type — GET /v4/email-domain-type/check

Classifies one domain as disposable, free (a consumer provider like Gmail/Yahoo/Outlook), or company (a real business domain) — plus a separate hostingProvider signal (Google Workspace / Microsoft 365 / Zoho Mail) that never reclassifies a real company as "free" just because a consumer platform hosts its mail. type is null, never a guess, when we have no classification for a domain.

ParamRequiredNotes
domainYesA bare domain, e.g. example.com (no scheme/path).
cURLCopy
curl "https://api.marketxy.com/v4/email-domain-type/check?domain=example.com" \
  -H "X-API-Key: mxy_live_your_key_here"
PythonCopy
import requests

resp = requests.get(
    "https://api.marketxy.com/v4/email-domain-type/check",
    params={"domain": "example.com"},
    headers={"X-API-Key": "mxy_live_your_key_here"},
)
print(resp.json())
PHPCopy
$ch = curl_init("https://api.marketxy.com/v4/email-domain-type/check?domain=example.com");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-Key: mxy_live_your_key_here"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Node.jsCopy
const res = await fetch("https://api.marketxy.com/v4/email-domain-type/check?domain=example.com", {
  headers: { "X-API-Key": "mxy_live_your_key_here" },
});
console.log(await res.json());
Example response — real, live-verifiedCopy
{
  "statusCode": 200,
  "data": {
    "domain": "yoocco.com",
    "type": "company",
    "source": "actes-z7",
    "hostingProvider": "google-workspace",
    "found": true
  }
}

source is actes-z7 for a real crawled classification, or curated-list (major free providers — Gmail, Yahoo, Outlook/Hotmail, iCloud, AOL, ProtonMail, Zoho, GMX, Yandex, Mail.ru) / disposable-email-domains-package (a 121,570-domain open-source list) when the crawl has nothing and a maintained fallback list answers instead — the fallback never overrides a real crawled classification.

Blacklisted Domain Explorer — GET /v4/blacklisted/explorer

Searches MarketXY's real flagged-domain/subdomain/IP database.

ParamRequiredNotes
searchNoFree-text filter.
recordTypeNoRestrict to one record kind.
page, pageSizeNopageSize max 100, default 25.
sortField, sortTypeNoDefault domain / asc.
filtersNoA JSON object, URL-encoded.
cURLCopy
curl "https://api.marketxy.com/v4/blacklisted/explorer?pageSize=10" \
  -H "X-API-Key: mxy_live_your_key_here"
PythonCopy
import requests

resp = requests.get(
    "https://api.marketxy.com/v4/blacklisted/explorer",
    params={"pageSize": 10},
    headers={"X-API-Key": "mxy_live_your_key_here"},
)
print(resp.json())
PHPCopy
$ch = curl_init("https://api.marketxy.com/v4/blacklisted/explorer?pageSize=10");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-Key: mxy_live_your_key_here"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Node.jsCopy
const res = await fetch("https://api.marketxy.com/v4/blacklisted/explorer?pageSize=10", {
  headers: { "X-API-Key": "mxy_live_your_key_here" },
});
console.log(await res.json());
Example response — real, live-verified (one hit, trimmed)Copy
{
  "statusCode": 200,
  "data": {
    "hits": [
      {
        "_source": {
          "domain": "000717-coinbase.com",
          "parent_domain": null,
          "d_or_subd": 1,
          "i7": "Malicious",
          "h2": "2025-05-29",
          "h1": "2026-10-11",
          "h0": "2025-05-29",
          "z8": ["raw.githubusercontent.com", "phishing-database-active", "dangerous-domains", "src262"]
        }
      }
    ]
  }
}
ⓘ
Reading a hit — domain/parent_domain/d_or_subd (0=subdomain, 1=domain, 2=IP) identify what's flagged; i7 is the category (Phishing/Malware/Malicious/Fraud/Adult/Threat/Toxic); h2 is first-found, h1 last-rechecked, h0 last-update; z8 lists the threat feed(s) that flagged it. The remaining _source fields are internal ES codes shared with other datasets — a full per-field reference for this endpoint is on the roadmap, not yet published.

People & contacts

Base pathPurposeStatus
/v4/person-registry/listGlobal contact registry (~1.09B records), searched with ?search= — also powers type=email; the bare path answers 400 with the sub-routesStable
/v4/emailFound-email database (legacy router)Deprecated

Misc & account

Base pathPurposeStatus
/v4/social-mediaLinked social-media profile dataBeta
/v4/technology-databaseTechnology/tech-stack directory (lookup by technology name, e.g. wordpress)Beta
/v4/domain/{domain}/technologiesTechnology stack for one domain — CMS, web server, CSS framework, analytics, and more. GET (path param, not ?domain=)Stable
/v4/country-metaCountry metadata referenceBeta
/v4/countInternal cached-stats counters (see count mode instead)Stable
/v4/lookupUnified lookup by domain/email/phone (older pattern)Stable
/v4/api-planYour key's status/usageStable
/v4/categoriesCategory CRUD — account management, not a data queryStable
/v4/omni-searchFree-text search across multiple data types at onceStable
/v4/client-domains, /client/asn, /client-whois, /client-domain-life-cycle, /clientAccount-scoped ("my saved domains") variantsBeta

Self-discovery endpoints

EndpointReturns
GET /v4/API root — name, version, status, links
GET /v4/data-pointsAll 16 data points (name, aliases, kind, description, example)
GET /v4/data-points/:nameDeep detail — includable sections and every real field name
GET /v4/api-plan/statusYour key's current plan, usage, remaining quota
GET /v4/api-plan/keyYour key's metadata — never the raw key after first creation

Roadmap & known limitations

Changelog

DateChange
2026-09-29Added type= alias for data_point= and real count=true mode.
2026-09-29Fixed type=email hanging then 500ing under cluster load — now a fast, honest timeout.
2026-09-22Universal Query API launched — 16 data points, one response shape.

Documentation generated from the MarketXY API codebase and validated against currently supported endpoints. Last updated 2026-10-20.