Product
One API key and one balance for many lookups
LookValid answers one question per call about a phone number, an email domain, an IP address, a domain or a web page. You send a value, you get structured JSON back, and you spend credits when the lookup finds something on most products. This post lists what is live today and how to reach it from a browser, from code and from an AI client.
One key, one balance
Every lookup uses the same API key, the same credit balance and the same error format. There is no wallet per product to top up, so adding a second lookup to a workflow is one more request rather than a second account. The key also works for the account endpoints and for the MCP server.
Most products use success billing: a lookup that finds nothing is free, and the response says found: false with a reason. A few products charge every completed call instead, and the product list shows which rule each one follows. Results are cached per account, so repeating the same lookup inside the cache window costs nothing. The full rules, including the cases where a hold on your balance is released, are in the credits and billing docs.
The lookups that are live
The table below is generated from the same product catalog the API and the docs read, so it cannot list a product that does not exist or a price that differs from what is charged. Credits are per unit, and the last column says what one unit is.
| Product id | Name | Credits | Charged | One unit |
|---|---|---|---|---|
| phone | Phone Numbering-Plan Validation | 1 | Only when found | per valid number |
| country-code | Country Calling Codes | 1 | Only when found | per lookup (an unknown code, country or name is free) |
| email-domain-check | Email Domain Check | 1 | Only when found | per address checked |
| ip | IP Intelligence | 1 | Only when found | per lookup |
| phone-spam | Phone Spam Check | 1 | Only when found | per number with complaints on record |
| link-safety | Link Safety Check | 1 | Every completed call | per URL checked (a check that cannot run is free) |
| carrier-lookup | Carrier Lookup (original carrier) | 1 | Only when found | per lookup (numbers outside the covered numbering plan areas are free) |
| vin-decoder | VIN Decoder | 1 | Only when found | per VIN that decodes (a VIN with no data is free) |
| link-in-bio-lookup | Link-in-Bio Lookup | 3 | Only when found | per resolved page (dead or empty pages are free) |
| domain-authority | Domain Authority | 10 | Only when found | per domain found in the rank data (an unranked domain is free) |
| domain-age | Domain Age | 2 | Only when found | per registered domain (unregistered domains are free) |
| website-scraper | Website Scraper | 10 | Only when found | per successful scrape (errors, empty and blocked pages are free) |
| website-contacts-scraper | Website Contacts Scraper | 10 | Only when found | per domain with contacts found |
| site-files | Site Files Checker | 2 | Only when found | per site checked (a site that cannot be reached is free) |
Live lookups, their credit price and what one unit is
A few of these checks have a deliberate edge worth knowing before you build on them. The phone check validates a number against its country numbering plan, so it cannot say whether a number is switched on. The email domain check reads DNS records and never contacts the mail server, so it cannot confirm that a mailbox exists. The carrier lookup reports the carrier originally assigned a US number block and does not reflect porting. Each product page states what its result does and does not mean.
Calling a lookup from code
Every lookup is a POST to https://YOUR_API_HOST/v1/<product> with a JSON body, and the key goes in an Authorization: Bearer header. Keys start with lv_live_ and are created in the dashboard. An IP lookup costs 1 credit when it finds something.
curl -X POST https://YOUR_API_HOST/v1/ip \
-H "Authorization: Bearer $LOOKVALID_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ip":"8.8.8.8"}'
Look up an IP address
A lookup that ran returns HTTP 200 whether or not it found anything. Read these fields from the body:
foundsays whether data came back, andreasonexplains afalse.dataholds the result, ornullwhen nothing was found.sourceslists where the data came from, including any attribution you need to show.credits_chargedandcredits_remainingshow what the call cost and what is left.cache_hitis true when you already paid for this lookup inside the cache window.
Free tools and the MCP server
You can try most lookups with no account. The free tools run in the browser at the free tools page, call the same lookups as the API, and are never billed. They are limited per visitor, which is the main reason to move to a key.
AI clients can use the same lookups over MCP. The server is at https://YOUR_API_HOST/v1/mcp. With a key, every live product is a tool at the same credit price. With no key, the server offers only the free tools. Tool names are the product id with hyphens turned into underscores, so domain-age becomes domain_age.
Where to start
Open a free tool first to see what a result looks like, then create a key and repeat the same lookup from code. The quickstart walks through both steps and takes a few minutes.