curl --request POST \
--url https://app.govly.com/api/tools/v1/contacts/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"cursor": "<string>",
"perPage": 25,
"buyerIds": [
"<string>"
],
"buyerDomains": [
"<string>"
],
"vendorNames": [
"<string>"
],
"titles": [
"<string>"
]
}
'import requests
url = "https://app.govly.com/api/tools/v1/contacts/search"
payload = {
"query": "<string>",
"cursor": "<string>",
"perPage": 25,
"buyerIds": ["<string>"],
"buyerDomains": ["<string>"],
"vendorNames": ["<string>"],
"titles": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
query: '<string>',
cursor: '<string>',
perPage: 25,
buyerIds: ['<string>'],
buyerDomains: ['<string>'],
vendorNames: ['<string>'],
titles: ['<string>']
})
};
fetch('https://app.govly.com/api/tools/v1/contacts/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.govly.com/api/tools/v1/contacts/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => '<string>',
'cursor' => '<string>',
'perPage' => 25,
'buyerIds' => [
'<string>'
],
'buyerDomains' => [
'<string>'
],
'vendorNames' => [
'<string>'
],
'titles' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.govly.com/api/tools/v1/contacts/search"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"cursor\": \"<string>\",\n \"perPage\": 25,\n \"buyerIds\": [\n \"<string>\"\n ],\n \"buyerDomains\": [\n \"<string>\"\n ],\n \"vendorNames\": [\n \"<string>\"\n ],\n \"titles\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}HttpResponse<String> response = Unirest.post("https://app.govly.com/api/tools/v1/contacts/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"cursor\": \"<string>\",\n \"perPage\": 25,\n \"buyerIds\": [\n \"<string>\"\n ],\n \"buyerDomains\": [\n \"<string>\"\n ],\n \"vendorNames\": [\n \"<string>\"\n ],\n \"titles\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.govly.com/api/tools/v1/contacts/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"<string>\",\n \"cursor\": \"<string>\",\n \"perPage\": 25,\n \"buyerIds\": [\n \"<string>\"\n ],\n \"buyerDomains\": [\n \"<string>\"\n ],\n \"vendorNames\": [\n \"<string>\"\n ],\n \"titles\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"name": "<string>",
"names": [
"<string>"
],
"active": true,
"lastActive": "<string>",
"oppCount": 123,
"titles": [
"<string>"
],
"jurisdictionLevels": [
"<string>"
],
"contactUrl": "<string>",
"buyers": [
{
"id": "<string>",
"name": "<string>"
}
],
"vendors": [
{
"id": "<string>",
"name": "<string>"
}
],
"contractVehicles": [
{
"id": "<string>",
"slug": "<string>",
"name": "<string>"
}
],
"setAsides": [
{
"id": "<string>",
"name": "<string>",
"code": "<string>"
}
],
"placeLocations": [
{
"label": "<string>",
"city": "<string>",
"region": "<string>",
"postalCode": "<string>"
}
],
"publicEntity": {
"id": "<string>",
"name": "<string>"
},
"email": "<string>",
"phoneNumbers": [
"<string>"
]
}
],
"meta": {
"count": 123,
"totalCount": 123,
"perPage": 123,
"nextCursor": "<string>"
}
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}Search contacts
Search government points of contact with the constrained public parameter set shared by MCP search_contacts. Email and phone are never returned in search results; use show_contact for a single contact. jurisdictionLevel defaults to federal.
curl --request POST \
--url https://app.govly.com/api/tools/v1/contacts/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"cursor": "<string>",
"perPage": 25,
"buyerIds": [
"<string>"
],
"buyerDomains": [
"<string>"
],
"vendorNames": [
"<string>"
],
"titles": [
"<string>"
]
}
'import requests
url = "https://app.govly.com/api/tools/v1/contacts/search"
payload = {
"query": "<string>",
"cursor": "<string>",
"perPage": 25,
"buyerIds": ["<string>"],
"buyerDomains": ["<string>"],
"vendorNames": ["<string>"],
"titles": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
query: '<string>',
cursor: '<string>',
perPage: 25,
buyerIds: ['<string>'],
buyerDomains: ['<string>'],
vendorNames: ['<string>'],
titles: ['<string>']
})
};
fetch('https://app.govly.com/api/tools/v1/contacts/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.govly.com/api/tools/v1/contacts/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => '<string>',
'cursor' => '<string>',
'perPage' => 25,
'buyerIds' => [
'<string>'
],
'buyerDomains' => [
'<string>'
],
'vendorNames' => [
'<string>'
],
'titles' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.govly.com/api/tools/v1/contacts/search"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"cursor\": \"<string>\",\n \"perPage\": 25,\n \"buyerIds\": [\n \"<string>\"\n ],\n \"buyerDomains\": [\n \"<string>\"\n ],\n \"vendorNames\": [\n \"<string>\"\n ],\n \"titles\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}HttpResponse<String> response = Unirest.post("https://app.govly.com/api/tools/v1/contacts/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"cursor\": \"<string>\",\n \"perPage\": 25,\n \"buyerIds\": [\n \"<string>\"\n ],\n \"buyerDomains\": [\n \"<string>\"\n ],\n \"vendorNames\": [\n \"<string>\"\n ],\n \"titles\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.govly.com/api/tools/v1/contacts/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"<string>\",\n \"cursor\": \"<string>\",\n \"perPage\": 25,\n \"buyerIds\": [\n \"<string>\"\n ],\n \"buyerDomains\": [\n \"<string>\"\n ],\n \"vendorNames\": [\n \"<string>\"\n ],\n \"titles\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"name": "<string>",
"names": [
"<string>"
],
"active": true,
"lastActive": "<string>",
"oppCount": 123,
"titles": [
"<string>"
],
"jurisdictionLevels": [
"<string>"
],
"contactUrl": "<string>",
"buyers": [
{
"id": "<string>",
"name": "<string>"
}
],
"vendors": [
{
"id": "<string>",
"name": "<string>"
}
],
"contractVehicles": [
{
"id": "<string>",
"slug": "<string>",
"name": "<string>"
}
],
"setAsides": [
{
"id": "<string>",
"name": "<string>",
"code": "<string>"
}
],
"placeLocations": [
{
"label": "<string>",
"city": "<string>",
"region": "<string>",
"postalCode": "<string>"
}
],
"publicEntity": {
"id": "<string>",
"name": "<string>"
},
"email": "<string>",
"phoneNumbers": [
"<string>"
]
}
],
"meta": {
"count": 123,
"totalCount": 123,
"perPage": 123,
"nextCursor": "<string>"
}
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Search text. Matches names, titles, vendors, buyers, and products. Supports quoted phrases and boolean operators such as AND, OR, and NOT.
Opaque pagination token from the previous response's meta.nextCursor. Omit for the first page. Tokens are bound to the query, filters, and sort inputs and carry no format guarantee.
x <= 100Sort field. Defaults to last_active (most recently active first).
last_active, opp_count asc, desc Filter by government level - federal (country-level) or regional (state/local). Defaults to federal when omitted.
federal, regional Filter to contacts associated with any of these Govly buyer (government entity) ids.
Filter to contacts associated with any of these buyer email domains, such as gsa.gov.
Filter to contacts associated with any of these vendor names.
Filter to contacts holding any of these job titles, such as Contracting Officer.
Was this page helpful?