API Endpoint: Company EIN Lookup by Name
The company-ein-lookup-by-name endpoint finds candidate EINs for a company name, ranked by confidence.
POST /api/v1/validate/company-ein-lookup-by-name
https://www.tincomply.com/api/v1/validate/company-ein-lookup-by-name
Submit a company name and receive candidate EINs ranked by name-match confidence. EINs are masked in the response; reveal the one you need with the reveal-ein endpoint below.
Request body
| Field | Type | Description |
|---|---|---|
namerequired |
string | The company name to search for. |
Response object: companyEinLookupByNameResult
| Field | Type | Description |
|---|---|---|
results | array | Candidate matches, omitted when there are none. Each item has id, name, ein (masked) and confidence (0 to 100). |
completed | bool | False when the upstream source was unavailable. The request is retried automatically; call request-details with the request id later to get the finished result. |
EINs come back masked. To get the full EIN for the candidate you want, call reveal-ein below with this request's id and the candidate's id.
What to do with this result
| When you see | Do this |
|---|---|
| One candidate at high confidence | Call reveal-ein for it, then confirm the EIN and name with IRS TIN matching before you rely on it. |
| Several candidates | Narrow them down first, for example by address with company details lookup. Each lookup includes one reveal, so choose before you reveal. |
| No results | Try the exact legal name (Inc versus Incorporated, with or without punctuation), or ask the company for a W-9. |
| completed is false | The source was unavailable. Keep the request id and call request-details later; the result fills in once the retry succeeds. |
Sample request
curl -X POST https://www.tincomply.com/api/v1/validate/company-ein-lookup-by-name \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"INTERNATIONAL BUSINESS MACHINES CORPORATION"}'import requests
response = requests.post(
"https://www.tincomply.com/api/v1/validate/company-ein-lookup-by-name",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"name": "INTERNATIONAL BUSINESS MACHINES CORPORATION",
},
)
response.raise_for_status()
print(response.json()["companyEinLookupByNameResult"])using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "YOUR_API_KEY");
var body = """
{
"name": "INTERNATIONAL BUSINESS MACHINES CORPORATION"
}
""";
var response = await client.PostAsync(
"https://www.tincomply.com/api/v1/validate/company-ein-lookup-by-name",
new StringContent(body, Encoding.UTF8, "application/json"));
Console.WriteLine(await response.Content.ReadAsStringAsync());const response = await fetch("https://www.tincomply.com/api/v1/validate/company-ein-lookup-by-name", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "INTERNATIONAL BUSINESS MACHINES CORPORATION",
}),
});
const data = await response.json();
console.log(data.companyEinLookupByNameResult);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String body = """
{
"name": "INTERNATIONAL BUSINESS MACHINES CORPORATION"
}
""";
HttpRequest request = HttpRequest.newBuilder(URI.create("https://www.tincomply.com/api/v1/validate/company-ein-lookup-by-name"))
.header("X-API-Key", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
// Parse with your JSON library (Jackson, Gson) and read companyEinLookupByNameResult.
System.out.println(response.body());
}
}package main
import (
"bytes"
"encoding/json"
"fmt"
"log"
"net/http"
)
func main() {
body := []byte(`{
"name": "INTERNATIONAL BUSINESS MACHINES CORPORATION"
}`)
req, err := http.NewRequest("POST", "https://www.tincomply.com/api/v1/validate/company-ein-lookup-by-name", bytes.NewReader(body))
if err != nil {
log.Fatal(err)
}
req.Header.Set("X-API-Key", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var data map[string]any
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
log.Fatal(err)
}
fmt.Println(data["companyEinLookupByNameResult"])
}$body = @'
{
"name": "INTERNATIONAL BUSINESS MACHINES CORPORATION"
}
'@
$response = Invoke-RestMethod -Method Post `
-Uri "https://www.tincomply.com/api/v1/validate/company-ein-lookup-by-name" `
-Headers @{ "X-API-Key" = "YOUR_API_KEY" } `
-ContentType "application/json" `
-Body $body
$response.companyEinLookupByNameResultSample response
{
"id": "3vQd8kLpZ0mYtN5rWcXaE2bF",
"request": {
"name": "INTERNATIONAL BUSINESS MACHINES CORPORATION",
"requestDate": "2026-10-01T14:02:11Z",
"requestedServices": "company-ein-lookup-by-name"
},
"companyEinLookupByNameResult": {
"completed": true,
"results": [
{
"id": "kIBnBIgsE022jdmzRAKrYgbO15e142clmUSasX6Rr8UkdgKU",
"name": "INTERNATIONAL BUSINESS MACHINES CORP",
"ein": "13-XXXXX66",
"confidence": 100
},
{
"id": "3aw5invM9UKeWtqgLB8mcQKz4Hywib4SPEWOsoTXjqZCdADW",
"name": "INTERNATIONAL BUSINESS MACHINES CORPORATION",
"ein": "13-XXXXX85",
"confidence": 100
}
]
}
}POST /api/v1/request-details/reveal-ein
https://www.tincomply.com/api/v1/request-details/reveal-ein
Step two of an EIN lookup: unmasks the EIN of the candidate you choose from the company-ein-lookup-by-name results. Each lookup includes one reveal; it does not use another check.
Request body
| Field | Type | Description |
|---|---|---|
idrequired |
string | The id of the company-ein-lookup-by-name request. |
resultIdrequired |
string | The id of the candidate inside companyEinLookupByNameResult.results. |
The response id is the candidate's id. Requires an API key with the History permission. This endpoint always returns HTTP 200. A body with a message field instead of an ein means the reveal was not permitted (for example, a different EIN on this request was already revealed).
Sample request
curl -X POST https://www.tincomply.com/api/v1/request-details/reveal-ein \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"id":"3vQd8kLpZ0mYtN5rWcXaE2bF","resultId":"kIBnBIgsE022jdmzRAKrYgbO15e142clmUSasX6Rr8UkdgKU"}'import requests
response = requests.post(
"https://www.tincomply.com/api/v1/request-details/reveal-ein",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"id": "3vQd8kLpZ0mYtN5rWcXaE2bF",
"resultId": "kIBnBIgsE022jdmzRAKrYgbO15e142clmUSasX6Rr8UkdgKU",
},
)
response.raise_for_status()
print(response.json())using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "YOUR_API_KEY");
var body = """
{
"id": "3vQd8kLpZ0mYtN5rWcXaE2bF",
"resultId": "kIBnBIgsE022jdmzRAKrYgbO15e142clmUSasX6Rr8UkdgKU"
}
""";
var response = await client.PostAsync(
"https://www.tincomply.com/api/v1/request-details/reveal-ein",
new StringContent(body, Encoding.UTF8, "application/json"));
Console.WriteLine(await response.Content.ReadAsStringAsync());const response = await fetch("https://www.tincomply.com/api/v1/request-details/reveal-ein", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
id: "3vQd8kLpZ0mYtN5rWcXaE2bF",
resultId: "kIBnBIgsE022jdmzRAKrYgbO15e142clmUSasX6Rr8UkdgKU",
}),
});
const data = await response.json();
console.log(data);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String body = """
{
"id": "3vQd8kLpZ0mYtN5rWcXaE2bF",
"resultId": "kIBnBIgsE022jdmzRAKrYgbO15e142clmUSasX6Rr8UkdgKU"
}
""";
HttpRequest request = HttpRequest.newBuilder(URI.create("https://www.tincomply.com/api/v1/request-details/reveal-ein"))
.header("X-API-Key", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
// Parse with your JSON library (Jackson, Gson) and read the response.
System.out.println(response.body());
}
}package main
import (
"bytes"
"encoding/json"
"fmt"
"log"
"net/http"
)
func main() {
body := []byte(`{
"id": "3vQd8kLpZ0mYtN5rWcXaE2bF",
"resultId": "kIBnBIgsE022jdmzRAKrYgbO15e142clmUSasX6Rr8UkdgKU"
}`)
req, err := http.NewRequest("POST", "https://www.tincomply.com/api/v1/request-details/reveal-ein", bytes.NewReader(body))
if err != nil {
log.Fatal(err)
}
req.Header.Set("X-API-Key", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var data map[string]any
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
log.Fatal(err)
}
fmt.Println(data)
}$body = @'
{
"id": "3vQd8kLpZ0mYtN5rWcXaE2bF",
"resultId": "kIBnBIgsE022jdmzRAKrYgbO15e142clmUSasX6Rr8UkdgKU"
}
'@
$response = Invoke-RestMethod -Method Post `
-Uri "https://www.tincomply.com/api/v1/request-details/reveal-ein" `
-Headers @{ "X-API-Key" = "YOUR_API_KEY" } `
-ContentType "application/json" `
-Body $body
$responseSample response
{
"id": "kIBnBIgsE022jdmzRAKrYgbO15e142clmUSasX6Rr8UkdgKU",
"ein": "13-5157866",
"name": "INTERNATIONAL BUSINESS MACHINES CORP"
}Errors
Requests that cannot be processed return HTTP 400 with an object keyed by field name, each listing what was wrong. Authentication, permission and other status codes are covered in Errors & service status.
This endpoint requires an API key with the Validate permission.
See how this check works in the portal and what it costs: EIN & Company Lookup