Download OpenAPI specification:Download
In order to dramatically improve our offerings to customers, Seamless will be introducing a Public API which can be used to search Companies & Contacts, Enrich Lists, and offer integrations as an Endpoint for our customers.
The API is build using RESTful principles and is secured using OAuth 2.0 with the implicit grant flow.
Before integrating, you have to setup your client credentials.
To create a new API client, go to Seamless.AI | Settings > Public API Connections, and click the Create New Connection button.
Note: The Public API Connections menu will only appear if your account has access to the Public API.
client_id
client_secret
redirect_uri
You’ll use these to authenticate and obtain tokens.
Redirect the user to Seamless.AI's OAuth authorization endpoint:
GET https://login.seamless.ai/oauth/authorize
Name | Description |
---|---|
client_id |
Your client ID |
redirect_uri |
The URL users are redirected to |
state |
(Optional) CSRF protection string |
Example URL:
GET https://login.seamless.ai/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=https://yourapp.com/callback
Once the user authenticates, they will be redirected to your redirect_uri
with a code
parameter.
POST https://api.seamless.ai/api/client/v1/oauth/accessToken
{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"redirect_uri": "https://yourapp.com/callback",
"grant_type": "authorization_code",
"code": "AUTHORIZATION_CODE_FROM_STEP_2"
}
{
"access_token": "ACCESS_TOKEN",
"refresh_token": "REFRESH_TOKEN",
"expires_at": 1712000000
}
For all authenticated API requests, include the token in the header:
Authorization: Bearer ACCESS_TOKEN
To refresh the access token:
POST https://api.seamless.ai/api/client/v1/oauth/accessToken
{
"client_Id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"redirect_uri": "https://yourapp.com/callback",
"grant_type": "refresh_token",
"refresh_token": "YOUR_REFRESH_TOKEN"
}
The limit is currently around 100 requests per 60 seconds per Endpoint. You will receive a 429 HTTP response if you exceed the rate limit.
Rate limit information will be returned in the response header of each request. The parameters are:
Name | Example | Description |
---|---|---|
X-RateLimit-Limit |
100 | The maximum number of requests you're permitted to make in a given time period. |
X-RateLimit-Remaining |
55 | The number of requests remaining in the current rate limit window. |
X-RateLimit-Reset |
1745587198 | The time at which the current rate limit window resets in epoch seconds. |
client_id | string |
client_secret | string |
redirect_uri | string |
grant_type required | string Enum: "authorization_code" "refresh_token" |
code | string Required if grant_type is authorization_code |
refresh_token | string Required if grant_type is refresh_token |
{- "client_id": "string",
- "client_secret": "string",
- "redirect_uri": "string",
- "grant_type": "authorization_code",
- "code": "string",
- "refresh_token": "string"
}
{- "access_token": "string",
- "expires_at": 0,
- "refresh_token": "string"
}
page | integer Default: 1 The page number to retrieve. |
limit | integer Default: 10 The number of contacts per page. |
companyName | Array of strings <= 100 items Contact company name search filter. |
companyNameSearchType | string Default: "default" Enum: "default" "related" "exact" The type of search to perform on the company name. |
companyDomain | Array of strings <= 100 items Contact company domain search filter. |
contactState | Array of strings <= 10 items Contact or Company state search filter. |
contactCountry | Array of strings <= 10 items Contact or Company country search filter. |
contactZipCode | Array of strings <= 10 items Contact or Company zipcode search filter. |
locationType | string Default: "bothOR" Enum: "bothOR" "bothAND" "company" "contact" You can search by contacts’ location(contact), the companies’ location(company), both Contact And company(bothAND), or both contact Or company(bothOR). |
department | Array of strings <= 5 items Items Enum: "Sales" "Marketing" "Engineering" "Human Resources" "Finance" "IT" "Engineering" "Operations" "Support" "Legal" "Project Management" "Other" Contact department search filter. |
industry | Array of strings <= 5 items Contact industry search filter. |
fullname | Array of strings <= 10 items Contact fullname search filter. |
contactKeyword | Array of strings <= 10 items Contact keyword search filter. |
jobTitle | Array of strings <= 10 items Contact job title search filter. |
seniority | Array of strings <= 5 items Items Enum: "C-Level" "VP" "Director" "Manager" "Senior" "Entry Level" "Mid-Level" "Other" Contact seniority search filter. |
{- "page": 1,
- "limit": 10,
- "companyName": [
- "Seamless.AI"
], - "companyNameSearchType": "default",
- "companyDomain": [ ],
- "contactState": [ ],
- "contactCountry": [ ],
- "contactZipCode": [ ],
- "locationType": "bothOR",
- "department": [ ],
- "industry": [ ],
- "fullname": [ ],
- "contactKeyword": [ ],
- "jobTitle": [ ],
- "seniority": [ ]
}
{- "data": [
- {
- "searchResultId": "string",
- "company": "string",
- "country": "string",
- "department": "string",
- "domain": "string",
- "liUrl": "string",
- "name": "string",
- "seniority": "string",
- "state": "string",
- "title": "string",
- "companyLIProfileUrl": "string",
- "sicCode": "string",
- "contactId": 0
}
], - "supplementalData": {
- "isMore": true,
- "total": 0,
- "perPage": 0
}
}
page | integer Default: 1 The page number to retrieve. |
limit | integer Default: 10 The number of contacts per page. |
companyName | Array of strings <= 100 items Company name search filter. |
companyNameSearchType | string Default: "default" Enum: "default" "related" "exact" The type of search to perform on the company name. |
companyDomain | Array of strings <= 100 items Company domain search filter. |
companyState | Array of strings <= 10 items Company state search filter. |
companyCountry | Array of strings <= 10 items Company country search filter. |
companyZipCode | Array of strings <= 10 items Company zipcode search filter. |
companyStreet | Array of strings <= 10 items Company street search filter. |
industry | Array of strings <= 5 items Company industry search filter. |
companyKeyword | Array of strings <= 10 items Company keyword search filter. |
companySize | Array of strings <= 10 items Items Enum: "0 - 1 (Self-employed)" "2 - 10" "11 - 50" "51 - 200" "201 - 500" "501 - 1,000" "1,001 - 5,000" "5,001 - 10,000" "10,001+" Company size search filter. |
companyRevenue | Array of strings <= 10 items Items Enum: "$0 - $100K" "$100K - $1M" "$1M - $5M" "$5M - $20M" "$20M - $50M" "$50M - $100M" "$100M - $500M" "$500M - $1B" "$1B+" Company revenue search filter. |
technologies | Array of strings <= 10 items Company technologies search filter. |
{- "page": 1,
- "limit": 10,
- "companyName": [
- "Seamless AI"
], - "companyNameSearchType": "default",
- "companyDomain": [ ],
- "companyState": [ ],
- "companyCountry": [ ],
- "companyZipCode": [ ],
- "companyStreet": [ ],
- "industry": [ ],
- "companyKeyword": [ ],
- "companySize": [ ],
- "companyRevenue": [ ],
- "technologies": [ ]
}
{- "data": [
- {
- "goldCompanyId": "string",
- "state": "string",
- "country": "string",
- "domain": "string",
- "description": "string",
- "liUrl": "string",
- "name": "string",
- "sicCode": 0,
- "industries": [
- "string"
], - "revenueRange": "string",
- "StaffCountRange": "string",
- "technologies": [
- "string"
], - "linkedInId": "string",
- "companyLIProfileUrl": "string"
}
], - "supplementalData": {
- "isMore": true,
- "total": 0,
- "perPage": 0
}
}
Pushes the results of a company research request. To create a webhook, go to Seamless.AI | Settings > Webhooks and click the Create New Webhook button and select Contact Research as the type.
username | string |
createdAt | string |
updatedAt | string |
firstName | string |
middleName | string |
lastName | string |
fullName | string |
name | string |
nameOriginal | string |
string | |
personalEmail | string |
phone | string |
contactPhone1 | string |
contactPhone1DataType | string |
contactPhone1TotalAI | string |
companyPhone1 | string |
companyPhone1DataType | string |
companyPhone1TotalAI | string |
company | string |
companyOriginal | string |
companyIndustry | string |
companyStaffCount | integer |
companyStaffCountRange | string |
companyAnnualRevenue | string |
companyDomain | string |
companyRevenueRange | string |
companyLIProfileUrl | string |
companyLinkedInId | string |
title | string |
lIProfileUrl | string |
lISalesNavUrl | string |
lIRecruiterUrl | string |
object | |
object | |
object | |
website | string |
email1 | string |
email1Count | string |
email1Selected | boolean |
email1TotalAI | string |
email1UserAI | boolean |
email1EmailAI | string |
email2 | string |
email2Count | string |
email2TotalAI | string |
email2UserAI | boolean |
email2EmailAI | string |
{- "username": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "firstName": "string",
- "middleName": "string",
- "lastName": "string",
- "fullName": "string",
- "name": "string",
- "nameOriginal": "string",
- "email": "string",
- "personalEmail": "string",
- "phone": "string",
- "contactPhone1": "string",
- "contactPhone1DataType": "string",
- "contactPhone1TotalAI": "string",
- "companyPhone1": "string",
- "companyPhone1DataType": "string",
- "companyPhone1TotalAI": "string",
- "company": "string",
- "companyOriginal": "string",
- "companyIndustry": "string",
- "companyStaffCount": 0,
- "companyStaffCountRange": "string",
- "companyAnnualRevenue": "string",
- "companyDomain": "string",
- "companyRevenueRange": "string",
- "companyLIProfileUrl": "string",
- "companyLinkedInId": "string",
- "title": "string",
- "lIProfileUrl": "string",
- "lISalesNavUrl": "string",
- "lIRecruiterUrl": "string",
- "contactLocation": {
- "street1": "string",
- "street2": "string",
- "street3": "string",
- "city": "string",
- "state": "string",
- "postCode": "string",
- "county": "string",
- "country": "string",
- "stateAbbr": "string",
- "countryAbbr": "string",
- "countryAlpha2": "string",
- "countryAlpha3": "string",
- "countryNumeric": "string",
- "fullString": "string"
}, - "companyLocation": {
- "street1": "string",
- "street2": "string",
- "street3": "string",
- "city": "string",
- "state": "string",
- "postCode": "string",
- "county": "string",
- "country": "string",
- "stateAbbr": "string",
- "countryAbbr": "string",
- "countryAlpha2": "string",
- "countryAlpha3": "string",
- "countryNumeric": "string",
- "fullString": "string"
}, - "websiteUserAi": {
- "domainId": "string"
}, - "website": "string",
- "email1": "string",
- "email1Count": "string",
- "email1Selected": true,
- "email1TotalAI": "string",
- "email1UserAI": true,
- "email1EmailAI": "string",
- "email2": "string",
- "email2Count": "string",
- "email2TotalAI": "string",
- "email2UserAI": true,
- "email2EmailAI": "string"
}
Research contacts by searchResultId from contact search results or Contact enrich
searchResultIds | Array of strings <= 100 items The search result IDs to research |
isJobChange | boolean |
Array of objects <= 100 items Contact enrich, must include one of the following properties:
|
{- "searchResultIds": [
- "string"
], - "isJobChange": true,
- "contacts": [
- {
- "contactName": "string",
- "companyName": "string",
- "email": "string",
- "liProfileUrl": "string",
- "liSalesNavUrl": "string",
- "liRecruiterUrl": "string"
}
]
}
{- "requestIds": [
- "string"
]
}
Get the results/status of a contact research request
requestIds required | Array of strings [ 1 .. 100 ] items Example: requestIds=1,2,3,4,5 The id of the research request. |
{- "data": {
- "requestId": "string",
- "status": "string",
- "results": [
- {
- "username": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "firstName": "string",
- "middleName": "string",
- "lastName": "string",
- "fullName": "string",
- "name": "string",
- "nameOriginal": "string",
- "email": "string",
- "personalEmail": "string",
- "phone": "string",
- "contactPhone1": "string",
- "contactPhone1DataType": "string",
- "contactPhone1TotalAI": "string",
- "companyPhone1": "string",
- "companyPhone1DataType": "string",
- "companyPhone1TotalAI": "string",
- "company": "string",
- "companyOriginal": "string",
- "companyIndustry": "string",
- "companyStaffCount": 0,
- "companyStaffCountRange": "string",
- "companyAnnualRevenue": "string",
- "companyDomain": "string",
- "companyRevenueRange": "string",
- "companyLIProfileUrl": "string",
- "companyLinkedInId": "string",
- "title": "string",
- "lIProfileUrl": "string",
- "lISalesNavUrl": "string",
- "lIRecruiterUrl": "string",
- "contactLocation": {
- "street1": "string",
- "street2": "string",
- "street3": "string",
- "city": "string",
- "state": "string",
- "postCode": "string",
- "county": "string",
- "country": "string",
- "stateAbbr": "string",
- "countryAbbr": "string",
- "countryAlpha2": "string",
- "countryAlpha3": "string",
- "countryNumeric": "string",
- "fullString": "string"
}, - "companyLocation": {
- "street1": "string",
- "street2": "string",
- "street3": "string",
- "city": "string",
- "state": "string",
- "postCode": "string",
- "county": "string",
- "country": "string",
- "stateAbbr": "string",
- "countryAbbr": "string",
- "countryAlpha2": "string",
- "countryAlpha3": "string",
- "countryNumeric": "string",
- "fullString": "string"
}, - "websiteUserAi": {
- "domainId": "string"
}, - "website": "string",
- "email1": "string",
- "email1Count": "string",
- "email1Selected": true,
- "email1TotalAI": "string",
- "email1UserAI": true,
- "email1EmailAI": "string",
- "email2": "string",
- "email2Count": "string",
- "email2TotalAI": "string",
- "email2UserAI": true,
- "email2EmailAI": "string"
}
]
}
}
Pushes the results of a company research request. To create a webhook, go to Seamless.AI | Settings > Webhooks and click the Create New Webhook button and select Company Research as the type.
advertisingIntelligenceUrl | string |
alexaScoreUrl | string |
annualRevenue | string |
phones | string |
phonesAiScores | string |
createdAt | string |
description | string |
domain | string |
employeeReviewsUrl | string |
foundedOn | string |
googleFinanceUrl | string |
googleResearchUrl | string |
industries | string |
intelUrl | string |
jobPostingsUrl | string |
linkedInProfileUrl | string |
linkedInId | string |
localSportsTeamsUrl | string |
localWeatherUrl | string |
object | |
name | string |
newsUrl | string |
paidSearchIntelligenceUrl | string |
paidSearchKeywordsIntelligenceUrl | string |
revenueRange | string |
searchMarketingIntelligenceUrl | string |
secFilingsUrl | string |
seoResearchUrl | string |
sicCode | string |
similarWebsitesUrl | string |
socialMediaMentionsUrl | string |
socialMediaPostsUrl | string |
socialPostsUrl | string |
staffCount | string |
staffCountRange | string |
topTechnologies | string |
updatedAt | string |
webTechnologiesUrl | string |
websiteAuditUrl | string |
websiteAudit2Url | string |
websiteGraderUrl | string |
whoisUrl | string |
wikipediaUrl | string |
yahooFinanceUrl | string |
{- "advertisingIntelligenceUrl": "string",
- "alexaScoreUrl": "string",
- "annualRevenue": "string",
- "phones": "string",
- "phonesAiScores": "string",
- "createdAt": "2024-04-21T14:30:00.000Z",
- "description": "string",
- "domain": "string",
- "employeeReviewsUrl": "string",
- "foundedOn": "string",
- "googleFinanceUrl": "string",
- "googleResearchUrl": "string",
- "industries": "string",
- "intelUrl": "string",
- "jobPostingsUrl": "string",
- "linkedInProfileUrl": "string",
- "linkedInId": "string",
- "localSportsTeamsUrl": "string",
- "localWeatherUrl": "string",
- "location": {
- "street1": "string",
- "city": "string",
- "state": "string",
- "postCode": "string",
- "country": "string",
- "countryAbbr": "string",
- "countryAlpha2": "string",
- "countryAlpha3": "string",
- "fullString": "string"
}, - "name": "string",
- "newsUrl": "string",
- "paidSearchIntelligenceUrl": "string",
- "paidSearchKeywordsIntelligenceUrl": "string",
- "revenueRange": "string",
- "searchMarketingIntelligenceUrl": "string",
- "secFilingsUrl": "string",
- "seoResearchUrl": "string",
- "sicCode": "string",
- "similarWebsitesUrl": "string",
- "socialMediaMentionsUrl": "string",
- "socialMediaPostsUrl": "string",
- "socialPostsUrl": "string",
- "staffCount": "string",
- "staffCountRange": "string",
- "topTechnologies": "string",
- "updatedAt": "2024-04-21T14:30:00.000Z",
- "webTechnologiesUrl": "string",
- "websiteAuditUrl": "string",
- "websiteAudit2Url": "string",
- "websiteGraderUrl": "string",
- "whoisUrl": "string",
- "wikipediaUrl": "string",
- "yahooFinanceUrl": "string"
}
Research companies by searchResultId from company search results
searchResultIds | Array of strings <= 100 items |
Array of objects <= 100 items Must include one of the following properties:
|
{- "searchResultIds": [
- "string"
], - "companies": [
- {
- "domain": "string",
- "companyName": "string"
}
]
}
{- "requestIds": [
- "string"
]
}
Get the results/status of a company research
requestIds required | Array of strings [ 1 .. 100 ] items Example: requestIds=1,2,3,4,5 The id of the research request. |
{- "data": {
- "requestId": "string",
- "status": "string",
- "results": [
- {
- "advertisingIntelligenceUrl": "string",
- "alexaScoreUrl": "string",
- "annualRevenue": "string",
- "phones": "string",
- "phonesAiScores": "string",
- "createdAt": "2024-04-21T14:30:00.000Z",
- "description": "string",
- "domain": "string",
- "employeeReviewsUrl": "string",
- "foundedOn": "string",
- "googleFinanceUrl": "string",
- "googleResearchUrl": "string",
- "industries": "string",
- "intelUrl": "string",
- "jobPostingsUrl": "string",
- "linkedInProfileUrl": "string",
- "linkedInId": "string",
- "localSportsTeamsUrl": "string",
- "localWeatherUrl": "string",
- "location": {
- "street1": "string",
- "city": "string",
- "state": "string",
- "postCode": "string",
- "country": "string",
- "countryAbbr": "string",
- "countryAlpha2": "string",
- "countryAlpha3": "string",
- "fullString": "string"
}, - "name": "string",
- "newsUrl": "string",
- "paidSearchIntelligenceUrl": "string",
- "paidSearchKeywordsIntelligenceUrl": "string",
- "revenueRange": "string",
- "searchMarketingIntelligenceUrl": "string",
- "secFilingsUrl": "string",
- "seoResearchUrl": "string",
- "sicCode": "string",
- "similarWebsitesUrl": "string",
- "socialMediaMentionsUrl": "string",
- "socialMediaPostsUrl": "string",
- "socialPostsUrl": "string",
- "staffCount": "string",
- "staffCountRange": "string",
- "topTechnologies": "string",
- "updatedAt": "2024-04-21T14:30:00.000Z",
- "webTechnologiesUrl": "string",
- "websiteAuditUrl": "string",
- "websiteAudit2Url": "string",
- "websiteGraderUrl": "string",
- "whoisUrl": "string",
- "wikipediaUrl": "string",
- "yahooFinanceUrl": "string"
}
]
}
}
Get a list of contacts from your orgs
page | integer Default: 1 Example: page=2 The page number to retrieve. |
limit | integer <= 500 Default: 500 Example: limit=100 The number of results per page. |
startDate required | string <date> Example: startDate=2020-01-01T10:00:00Z An ISO8601 date time string that defines the start date of the lookback period to return results from. |
endDate required | string <date> Example: endDate=2020-01-01T11:00:00Z An ISO8601 date time string that defines the end date of the lookback period to return results from. |
{- "data": [
- {
- "username": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "firstName": "string",
- "middleName": "string",
- "lastName": "string",
- "fullName": "string",
- "name": "string",
- "nameOriginal": "string",
- "email": "string",
- "personalEmail": "string",
- "phone": "string",
- "contactPhone1": "string",
- "contactPhone1DataType": "string",
- "contactPhone1TotalAI": "string",
- "companyPhone1": "string",
- "companyPhone1DataType": "string",
- "companyPhone1TotalAI": "string",
- "company": "string",
- "companyOriginal": "string",
- "companyIndustry": "string",
- "companyStaffCount": 0,
- "companyStaffCountRange": "string",
- "companyAnnualRevenue": "string",
- "companyDomain": "string",
- "companyRevenueRange": "string",
- "companyLIProfileUrl": "string",
- "companyLinkedInId": "string",
- "title": "string",
- "lIProfileUrl": "string",
- "lISalesNavUrl": "string",
- "lIRecruiterUrl": "string",
- "contactLocation": {
- "street1": "string",
- "street2": "string",
- "street3": "string",
- "city": "string",
- "state": "string",
- "postCode": "string",
- "county": "string",
- "country": "string",
- "stateAbbr": "string",
- "countryAbbr": "string",
- "countryAlpha2": "string",
- "countryAlpha3": "string",
- "countryNumeric": "string",
- "fullString": "string"
}, - "companyLocation": {
- "street1": "string",
- "street2": "string",
- "street3": "string",
- "city": "string",
- "state": "string",
- "postCode": "string",
- "county": "string",
- "country": "string",
- "stateAbbr": "string",
- "countryAbbr": "string",
- "countryAlpha2": "string",
- "countryAlpha3": "string",
- "countryNumeric": "string",
- "fullString": "string"
}, - "websiteUserAi": {
- "domainId": "string"
}, - "website": "string",
- "email1": "string",
- "email1Count": "string",
- "email1Selected": true,
- "email1TotalAI": "string",
- "email1UserAI": true,
- "email1EmailAI": "string",
- "email2": "string",
- "email2Count": "string",
- "email2TotalAI": "string",
- "email2UserAI": true,
- "email2EmailAI": "string"
}
]
}
Get a list of companies from your orgs
page | integer Default: 1 Example: page=1 The page number to retrieve. |
limit | integer <= 500 Default: 500 Example: limit=100 The number of results per page. |
startDate required | string <date> Example: startDate=2020-01-01T10:00:00Z An ISO8601 date time string that defines the start date of the lookback period to return results from. |
endDate required | string <date> Example: endDate=2020-01-01T11:00:00Z An ISO8601 date time string that defines the end date of the lookback period to return results from. |
{- "data": [
- {
- "advertisingIntelligenceUrl": "string",
- "alexaScoreUrl": "string",
- "annualRevenue": "string",
- "phones": "string",
- "phonesAiScores": "string",
- "createdAt": "2024-04-21T14:30:00.000Z",
- "description": "string",
- "domain": "string",
- "employeeReviewsUrl": "string",
- "foundedOn": "string",
- "googleFinanceUrl": "string",
- "googleResearchUrl": "string",
- "industries": "string",
- "intelUrl": "string",
- "jobPostingsUrl": "string",
- "linkedInProfileUrl": "string",
- "linkedInId": "string",
- "localSportsTeamsUrl": "string",
- "localWeatherUrl": "string",
- "location": {
- "street1": "string",
- "city": "string",
- "state": "string",
- "postCode": "string",
- "country": "string",
- "countryAbbr": "string",
- "countryAlpha2": "string",
- "countryAlpha3": "string",
- "fullString": "string"
}, - "name": "string",
- "newsUrl": "string",
- "paidSearchIntelligenceUrl": "string",
- "paidSearchKeywordsIntelligenceUrl": "string",
- "revenueRange": "string",
- "searchMarketingIntelligenceUrl": "string",
- "secFilingsUrl": "string",
- "seoResearchUrl": "string",
- "sicCode": "string",
- "similarWebsitesUrl": "string",
- "socialMediaMentionsUrl": "string",
- "socialMediaPostsUrl": "string",
- "socialPostsUrl": "string",
- "staffCount": "string",
- "staffCountRange": "string",
- "topTechnologies": "string",
- "updatedAt": "2024-04-21T14:30:00.000Z",
- "webTechnologiesUrl": "string",
- "websiteAuditUrl": "string",
- "websiteAudit2Url": "string",
- "websiteGraderUrl": "string",
- "whoisUrl": "string",
- "wikipediaUrl": "string",
- "yahooFinanceUrl": "string"
}
]
}