curl --request POST \
--url https://api.metal.ai/v1/companies/search \
--header 'Content-Type: application/json' \
--header 'x-metal-api-key: <api-key>' \
--header 'x-metal-client-id: <api-key>' \
--data '
{
"text": "industrial automation suppliers",
"filters": {
"and": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>",
"and": "<array>",
"or": "<array>"
}
],
"or": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>",
"and": "<array>",
"or": "<array>"
}
]
},
"sort": [
{
"field": "<string>"
}
],
"hybrid": false,
"fuzzy": false,
"fullText": false
}
'import requests
url = "https://api.metal.ai/v1/companies/search"
payload = {
"text": "industrial automation suppliers",
"filters": {
"and": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>",
"and": "<array>",
"or": "<array>"
}
],
"or": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>",
"and": "<array>",
"or": "<array>"
}
]
},
"sort": [{ "field": "<string>" }],
"hybrid": False,
"fuzzy": False,
"fullText": False
}
headers = {
"x-metal-client-id": "<api-key>",
"x-metal-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-metal-client-id': '<api-key>',
'x-metal-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: 'industrial automation suppliers',
filters: {
and: [
{
field: '<string>',
operator: '<string>',
value: '<unknown>',
and: '<array>',
or: '<array>'
}
],
or: [
{
field: '<string>',
operator: '<string>',
value: '<unknown>',
and: '<array>',
or: '<array>'
}
]
},
sort: [{field: '<string>'}],
hybrid: false,
fuzzy: false,
fullText: false
})
};
fetch('https://api.metal.ai/v1/companies/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.metal.ai/v1/companies/search"
payload := strings.NewReader("{\n \"text\": \"industrial automation suppliers\",\n \"filters\": {\n \"and\": [\n {\n \"field\": \"<string>\",\n \"operator\": \"<string>\",\n \"value\": \"<unknown>\",\n \"and\": \"<array>\",\n \"or\": \"<array>\"\n }\n ],\n \"or\": [\n {\n \"field\": \"<string>\",\n \"operator\": \"<string>\",\n \"value\": \"<unknown>\",\n \"and\": \"<array>\",\n \"or\": \"<array>\"\n }\n ]\n },\n \"sort\": [\n {\n \"field\": \"<string>\"\n }\n ],\n \"hybrid\": false,\n \"fuzzy\": false,\n \"fullText\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-metal-client-id", "<api-key>")
req.Header.Add("x-metal-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"data": [
{
"id": "665f1c2a9b1e4a0012a3b4c5",
"canonicalName": "Acme Industrials",
"alternativeNames": [
"<string>"
],
"website": "https://acme.example",
"description": "<string>",
"shortDescription": "<string>",
"sector": "Industrials",
"subsector": "<string>",
"industry": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"companyType": "operating",
"externalId": "<string>",
"externalReference": {
"source": "<string>",
"id": "<string>"
},
"tags": [
"<string>"
],
"assignees": [
{
"id": "<string>",
"type": "<string>"
}
],
"custom": {},
"employeeCount": 450,
"ownershipStatus": "private",
"lastValuation": 123,
"lastRoundDate": "2023-12-25",
"lastAmountRaised": 123,
"totalMoneyRaised": 123,
"lastFinancials": {},
"enrichment": {
"subsector": [
{
"value": "Self-Funded Health Insurance / Third Party Administrator (TPA)",
"source": "CIM",
"confidence": 100,
"pinned": true,
"discoveredAt": "2026-02-14T10:00:00Z"
},
{
"value": "Third-Party Administrators (TPAs)",
"source": "Market Report",
"confidence": 57,
"pinned": false,
"discoveredAt": "2026-01-20T10:00:00Z"
}
]
},
"lastEnrichedAt": "2023-11-07T05:31:56Z",
"lastEnrichmentStartedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"metadata": {
"page": 1,
"limit": 20,
"totalCount": 134,
"totalPages": 7
}
}{
"error": "invalid api key or clientId"
}Search companies
Returns companies ranked by relevance to a query.
curl --request POST \
--url https://api.metal.ai/v1/companies/search \
--header 'Content-Type: application/json' \
--header 'x-metal-api-key: <api-key>' \
--header 'x-metal-client-id: <api-key>' \
--data '
{
"text": "industrial automation suppliers",
"filters": {
"and": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>",
"and": "<array>",
"or": "<array>"
}
],
"or": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>",
"and": "<array>",
"or": "<array>"
}
]
},
"sort": [
{
"field": "<string>"
}
],
"hybrid": false,
"fuzzy": false,
"fullText": false
}
'import requests
url = "https://api.metal.ai/v1/companies/search"
payload = {
"text": "industrial automation suppliers",
"filters": {
"and": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>",
"and": "<array>",
"or": "<array>"
}
],
"or": [
{
"field": "<string>",
"operator": "<string>",
"value": "<unknown>",
"and": "<array>",
"or": "<array>"
}
]
},
"sort": [{ "field": "<string>" }],
"hybrid": False,
"fuzzy": False,
"fullText": False
}
headers = {
"x-metal-client-id": "<api-key>",
"x-metal-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-metal-client-id': '<api-key>',
'x-metal-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: 'industrial automation suppliers',
filters: {
and: [
{
field: '<string>',
operator: '<string>',
value: '<unknown>',
and: '<array>',
or: '<array>'
}
],
or: [
{
field: '<string>',
operator: '<string>',
value: '<unknown>',
and: '<array>',
or: '<array>'
}
]
},
sort: [{field: '<string>'}],
hybrid: false,
fuzzy: false,
fullText: false
})
};
fetch('https://api.metal.ai/v1/companies/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.metal.ai/v1/companies/search"
payload := strings.NewReader("{\n \"text\": \"industrial automation suppliers\",\n \"filters\": {\n \"and\": [\n {\n \"field\": \"<string>\",\n \"operator\": \"<string>\",\n \"value\": \"<unknown>\",\n \"and\": \"<array>\",\n \"or\": \"<array>\"\n }\n ],\n \"or\": [\n {\n \"field\": \"<string>\",\n \"operator\": \"<string>\",\n \"value\": \"<unknown>\",\n \"and\": \"<array>\",\n \"or\": \"<array>\"\n }\n ]\n },\n \"sort\": [\n {\n \"field\": \"<string>\"\n }\n ],\n \"hybrid\": false,\n \"fuzzy\": false,\n \"fullText\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-metal-client-id", "<api-key>")
req.Header.Add("x-metal-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"data": [
{
"id": "665f1c2a9b1e4a0012a3b4c5",
"canonicalName": "Acme Industrials",
"alternativeNames": [
"<string>"
],
"website": "https://acme.example",
"description": "<string>",
"shortDescription": "<string>",
"sector": "Industrials",
"subsector": "<string>",
"industry": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"companyType": "operating",
"externalId": "<string>",
"externalReference": {
"source": "<string>",
"id": "<string>"
},
"tags": [
"<string>"
],
"assignees": [
{
"id": "<string>",
"type": "<string>"
}
],
"custom": {},
"employeeCount": 450,
"ownershipStatus": "private",
"lastValuation": 123,
"lastRoundDate": "2023-12-25",
"lastAmountRaised": 123,
"totalMoneyRaised": 123,
"lastFinancials": {},
"enrichment": {
"subsector": [
{
"value": "Self-Funded Health Insurance / Third Party Administrator (TPA)",
"source": "CIM",
"confidence": 100,
"pinned": true,
"discoveredAt": "2026-02-14T10:00:00Z"
},
{
"value": "Third-Party Administrators (TPAs)",
"source": "Market Report",
"confidence": 57,
"pinned": false,
"discoveredAt": "2026-01-20T10:00:00Z"
}
]
},
"lastEnrichedAt": "2023-11-07T05:31:56Z",
"lastEnrichmentStartedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"metadata": {
"page": 1,
"limit": 20,
"totalCount": 134,
"totalPages": 7
}
}{
"error": "invalid api key or clientId"
}Authorizations
The Client ID of your API key.
The secret value of your API key.
Query Parameters
Page number, starting at 1. The deep offset (page - 1) * limit cannot exceed 10,000.
x >= 1Results per page. The maximum supported page size is 400.
1 <= x <= 400Body
Search text, structured filters, and ranking options. Pass pagination through the page and limit query parameters.
Free-text query ranked against the resource's searchable fields.
"industrial automation suppliers"
Structured predicates grouped with and and or.
Show child attributes
Show child attributes
Ordered sort fields.
Show child attributes
Show child attributes
Enables hybrid semantic and keyword ranking on endpoints that support it.
Enables approximate text matching on supported keyword-search paths. Document search and company hybrid search ignore this flag; activity search uses it only when fullText is false.
Enables word-level matching on endpoints that support it.
Related topics
MCP tools referenceSearch companies, deals, people, documents, and activitiesSearch dealsSearch peopleSearch documents
