Skip to content

Data API

Accounts

Search and retrieve organizations tracked in Parcel, including developers, architects, engineers, general contractors, agencies, law firms, and consultants.

Accounts represent organizations involved in construction and development projects: developers, architects, engineers, general contractors, agencies, law firms, consultants, and more. Each account may have one or more types, a list of known domains, and aggregated counts of associated projects and contacts.

Fields

FieldTypeNotes
iduuidUnique account identifier
namestringPrimary display name
account_typesstring[]One or more organization types. See Account types for allowed values
aliasesstring[]Known alternate names
domainsstring[]Associated web domains
websitestring | nullPrimary website URL
linkedin_urlstring | nullLinkedIn company page URL
citystring | nullPrimary city
statestring | nullPrimary state (two-letter code)
created_atstringISO 8601 timestamp, first seen in Parcel
projects_countintNumber of associated projects
contacts_countintNumber of associated contacts

Filters

Default sort: name asc

Filter keyTypeNotes
account_typefieldMatches against account_types[]. Array value = OR. "other" matches unclassified accounts (empty account_types), not a literal type value. See Account types
cityfieldCity name. exact_match: false (default) = fuzzy
statefieldState code, e.g. "MA"
namefieldOrganization name. Supports fuzzy match

Sort keys: name, created_at

Range keys: none

Relational filters

Use relational filters to match accounts based on properties of their related records.

KeyInner filter fields
has_projectstage, primary_use, city, name, residential_units (range)
without_projectstage, primary_use, city, name, residential_units (range)
has_signalsignal_type, filed_at (range)
without_signalsignal_type, filed_at (range)
has_contacttitle, name
without_contacttitle, name

Each without_* key takes the same inner fields as its has_* twin, but matches accounts with NO related record satisfying the inner criteria (NOT EXISTS) instead of at least one. See Filtering for the semantics.

Includes

Valid include keys for GET /data/accounts/{id}: projects, contacts, signals.

Example: GET /data/accounts/<id>?include=projects&include=contacts

Search example

Search accounts
curl -X POST https://api.parcelengineering.com/api/v1/data/accounts/search \
-H "Authorization: Bearer pcl_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"filters": {
"account_type": { "value": "developer" },
"has_project": {
"city": { "value": "Boston" },
"stage": { "value": "approved" }
}
},
"sort": { "field": "name", "order": "asc" },
"limit": 10
}'
Response
{
"data": [
{
"id": "8a1f3c2e-0001-4b7d-9e5a-000000000001",
"name": "Acme Development Group",
"account_types": ["developer"],
"aliases": ["Acme Dev"],
"domains": ["acmedev.com"],
"website": "https://acmedev.com",
"linkedin_url": "https://www.linkedin.com/company/acme-development-group",
"city": "Boston",
"state": "MA",
"created_at": "2024-03-15T12:00:00Z",
"projects_count": 12,
"contacts_count": 4
}
],
"metadata": {
"total": 47,
"total_is_capped": false,
"credits": 10
}
}

The data array is trimmed to one record above; a full limit: 10 page returns 10 records and costs 10 credits (1 per record returned).

See also