This document augments the operational instructions.
Verifying Connectivity to API: To verify you have initial connectivity to the API (as well as verify the service is running), you can hit the following URL using a standard HTTP GET request:
https://api.theshare.group/graphql/pingIf successful, you will see the following response:
{"message": "pong"}
Curl Example:
curl https://api.theshare.group/graphql/ping -H "X-Api-Key: my_api_key"
Getting Data:
To make a request for data, use the following configuration:
Headers:
"X-Api-Key": "your_api_key"
"Content-Type": "application/json"
Http Method: POST{
"query": "query LookupAddress {lookupAddress(address: \"27623 NE Bradford Rd\", zip: \"98607\") {first, last}}"
}
Data Format:
The values for most fields are self-explanatory, however, some fields (such as date fields) require a specific format. Please use the following formats:
| Field | Format | Example |
|---|---|---|
| All Date Fields | yyyy-mm-dd | 2025-10-23 |
| All Zip Code Radius Fields | Zip_Code-Radius. Radius is in miles and must be > 0.1 | 92203-3.5 |
| date_of_name_mmyyyy | MMYYYY | 062025 |
Best Practices:
Counts are Free:
Billing is based on user data returned. There is no charge to check if data is available (get a count). With this in mind, it is a good idea to first get a count of available records before retrieving the actual data.
Here is an example query to retrieve a count of all homes in zip code 92203 with a phone score of 1-5.:
{
"query": "query BlueprintCounts {blueprintCounts(blueprint: {name: \"dan_test\" data_source_id: 13 phones: all phone_type: wireless_priority phone_score: [\"1\", \"2\", \"3\", \"4\", \"5\"] filters: { field: \"zip\" values: \"92203\" condition: \"and\" } output_fields: \"\"}) {available}}"
}
Phone Score:
Phone score is a rating from 1-6 that indicates the liklihood of the phone number being accurate. '1' is highest and '6' is the lowest. Our research has yielded the most accurate results using a score of 1-5.
Data Sources:
There are a number of data sources available with the most common being Consumer (#13) and Consumer Mortgage (#31). You can retrieve a list of all available data sources and the number of available records by making a call to the dataSources endpoint.
{
"query": "query dataSources {dataSources {id name size}}"
}
Example Output:
{
"data": {
"dataSources": [
{
"id": 13,
"name": "Consumer",
"size": 269241053
},
{
"id": 15,
"name": "Auto",
"size": 222931866
},
...
]
}
}
Once you know the ID of the data source you want, you can retrieve a list of all available fields for it. The follow query retrieves the Consumer data source (#13):
{
"query": "query dataSource {dataSource(id: 13) {id name size fields{key range values{key value} } }}"
}
query Counts {
blueprintCounts(
blueprint: {
data_source_id: 13
phone_type: wireless_priority
filters: [
{ field: "address", values: "86 Comet Rd", condition: "and" }
{ field: "city", values: "Methuen", condition: "and" }
{ field: "state", values: "MA", condition: "and" }
]
output_fields: []
}
) {
available
}
}
mutation CreateCustomList {
createCustomList(
blueprint: {
name: "dan_test"
data_source_id: 13
phone_type: wireless_priority
filters: [
{ field: "address", values: "86 Comet Rd", condition: "and" }
{ field: "city", values: "Methuen", condition: "and" }
{ field: "state", values: "MA", condition: "and" }
]
output_fields: ["firstName", "lastName"]
}
recordCount: 1
) {
id
name
status
recordCount
fileURL
createdAt
updatedAt
}
}
query List {
list(id: 24225) {
id
name
status
recordCount
fileURL
createdAt
updatedAt
}
}
If you are only interested in a small number of records (e.x., for a specific address), the Lookup endpoints are ideal. They allow you to return a few records immediately as opposed to creating a full list. You can do a Lookup Count which will return a count of the number of results found or a plain Lookup which will return the actual records. As mentioned previously, counts are free so if you want to avoid fees you can do a count first to see if data is available and then request the data. There are dedicated endpoints for conducting searches by Address, Phone, Email or Person's Name. Additionally, there is a generic lookup endpoint where you can specify any crit
query LookupAddressCount {
lookupAddressCount(address: "4726 French St", zip: "32205") {
available
}
}
query LookupAddress {
lookupAddress(address: "4726 French St", zip: "32205", state: null) {
first
middle
last
address
city
state
zip
phone
}
}
In this example, we are doing the same search by address, however, we've added criteria to ensure the record returned record is not a renter.
query Lookup {
lookup(lookup: {
data_source_id: 13
select_type: "address_zip"
filters: [{
field: "address"
values: ["4726 French St"]
condition: "and"
},
{
field: "zip"
values: ["32205"]
condition: "and"
},
{
field: "homeowner"
values: ["R"]
condition: "and",
omit: true
}]
output_fields: []
}) {
first
last
phone
lor
}
}