---
type: "firecrawl-provider"
description: "Validate a phone number, or grade a lead's phone, email, address, and IP."
use_when: "Validate a phone number: validity, carrier, line type, and activity score.\n\nGrade a lead's phone, email, address, and IP, including optional email deliverability and email age."
categories: "People"
capabilities: 2
pricing: "15–30 credits per billed unit; see each capability for its unit and maximum."
---
# TrestleIQ on Firecrawl Alexandria

Validate a phone number, or grade a lead's phone, email, address, and IP.

- Categories: People
- Category index: [People category](https://alexandria.firecrawl.dev/agents/categories/people)
- Provider key: `trestleiq`
- Access: Firecrawl credits
- Cost (Phone validation): 15 credits per query
- Cost (Real contact): 30 credits per query

## More

- [Human guide](https://www.firecrawl.dev/app/alexandria/trestleiq)
- [OpenAPI spec](https://alexandria.firecrawl.dev/agents/providers/trestleiq/openapi.json)

## Capabilities

- [Phone validation](https://alexandria.firecrawl.dev/agents/providers/trestleiq/phones/validate): One phone validation. is_valid is false when the number is missing or invalid, and null when validity was not determined. A partial error object can sit on error while the other fields stay usable. warnings is empty when there are none. add_ons.litigator_checks is present only when litigator_checks was requested and returned; its field phone.is_litigator_risk is the official name.
- [Real contact](https://alexandria.firecrawl.dev/agents/providers/trestleiq/contacts/verify): One Real Contact body. phone, email, and address carry contact grades and is_valid. ip_address is null when no IP was sent. add_ons.email_checks holds email_is_deliverable and email_age_score. add_ons.litigator_checks.phone_is_litigator_risk is the v2 name. errors is a partial error or null. warnings is empty when there are none.

## 1. Choose this provider when

Validate a phone number: validity, carrier, line type, and activity score.

Grade a lead's phone, email, address, and IP, including optional email deliverability and email age.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "trestleiq",
  "capability": "phones/validate",
  "options": {
    "phone": "<phone>"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `phone` (string, required): Phone number in E.164 or local format. Example 2069735100. The default country calling code is +1. Example: `<phone>`
- `phone.country_hint` (string): ISO-3166 alpha-2 country code, any case, used to read a number given in local format. Example US. Example: `<phone.country_hint>`
- `add_ons` (string): Comma-separated add-on. The only value is litigator_checks (TCPA litigator detection). It is an extra $0.005 on the query. Example: `<add_ons>`
- `source_id` (string): Optional campaign or cohort id, at most 255 characters. Letters, numbers, spaces, and . _ - : / | #. It cannot begin with -. Example: `<source_id>`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "trestleiq",
    capability: "phones/validate",
    options: {
      phone: "<phone>",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "trestleiq",
  "capability": "phones/validate",
  "options": {
    "phone": "<phone>"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "trestleiq",
    "capability": "phones/validate",
    "options": {
      "phone": "<phone>"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'trestleiq/phones/validate' \
  --options '{"phone":"<phone>"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "trestleiq",
  "capability": "phones/validate",
  "options": {
    "phone": "<phone>"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "trestleiq",
  "capability": "phones/validate",
  "options": {
    "phone": "<phone>"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "id": "<id>",
  "phone_number": "<phone_number>",
  "is_valid": false,
  "activity_score": 0,
  "country_calling_code": "<country_calling_code>",
  "country_code": "<country_code>",
  "country_name": "<country_name>",
  "line_type": "<line_type>",
  "carrier": "<carrier>",
  "is_prepaid": false,
  "add_ons": {},
  "error": {},
  "warnings": [],
  "source_id": "<source_id>"
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Phone validation

- Capability: `phones/validate`
- Description: One phone validation. is_valid is false when the number is missing or invalid, and null when validity was not determined. A partial error object can sit on error while the other fields stay usable. warnings is empty when there are none. add_ons.litigator_checks is present only when litigator_checks was requested and returned; its field phone.is_litigator_risk is the official name.
- Instructions: Validate one phone number: whether it is valid, its carrier, line type, prepaid status, and a 0-100 activity score. 15 credits when a verification comes back. litigator_checks makes a returned litigator check 20 credits for the whole query. A body with no verification costs nothing. Use contacts/verify to grade a phone together with an email. TrestleIQ data is not a consumer report. Do not use it for credit, insurance, employment, housing, or benefits decisions, or for an automated decision with legal effects.
- Cost: 15 credits per query
- Capability file: [Phone validation](https://alexandria.firecrawl.dev/agents/providers/trestleiq/phones/validate)

Accepted options:
- `phone` (string, required): Phone number in E.164 or local format. Example 2069735100. The default country calling code is +1. Example: `<phone>`
- `phone.country_hint` (string): ISO-3166 alpha-2 country code, any case, used to read a number given in local format. Example US. Example: `<phone.country_hint>`
- `add_ons` (string): Comma-separated add-on. The only value is litigator_checks (TCPA litigator detection). It is an extra $0.005 on the query. Example: `<add_ons>`
- `source_id` (string): Optional campaign or cohort id, at most 255 characters. Letters, numbers, spaces, and . _ - : / | #. It cannot begin with -. Example: `<source_id>`

Response schema example:
```json
{
  "id": "<id>",
  "phone_number": "<phone_number>",
  "is_valid": false,
  "activity_score": 0,
  "country_calling_code": "<country_calling_code>",
  "country_code": "<country_code>",
  "country_name": "<country_name>",
  "line_type": "<line_type>",
  "carrier": "<carrier>",
  "is_prepaid": false,
  "add_ons": {},
  "error": {},
  "warnings": [],
  "source_id": "<source_id>"
}
```

### Real contact

- Capability: `contacts/verify`
- Description: One Real Contact body. phone, email, and address carry contact grades and is_valid. ip_address is null when no IP was sent. add_ons.email_checks holds email_is_deliverable and email_age_score. add_ons.litigator_checks.phone_is_litigator_risk is the v2 name. errors is a partial error or null. warnings is empty when there are none.
- Instructions: Grade one lead across phone, email, address, and IP. name and phone are required. email is how this route verifies an address; there is no separate email route. 30 credits when a verification comes back. Each returned add-on (email deliverability, email age, litigator check) adds 5 credits. A body with no verification costs nothing. Use phones/validate for carrier and line type without a grade. TrestleIQ data is not a consumer report. Do not use it for credit, insurance, employment, housing, or benefits decisions, or for an automated decision with legal effects.
- Cost: 30 credits per query
- Capability file: [Real contact](https://alexandria.firecrawl.dev/agents/providers/trestleiq/contacts/verify)

Accepted options:
- `name` (string, required): Person name to grade. Example John Doe. Example: `<name>`
- `phone` (string, required): Phone number from the lead. Example 4259853735. Example: `<phone>`
- `first_name` (string): Given name. Example John. Example: `<first_name>`
- `last_name` (string): Family name. Example Doe. Example: `<last_name>`
- `business.name` (string): Business name. Example The Golden Company. Example: `<business.name>`
- `email` (string): Email to grade. Optional on this route. Example john.doe@example.com. Example: `<email>`
- `address.street_line_1` (string): First street line. Example 100 Syrws St. Example: `<address.street_line_1>`
- `address.street_line_2` (string): Second street line, such as a unit. Example: `<address.street_line_2>`
- `address.city` (string): City. Example Lynden. Example: `<address.city>`
- `address.state_code` (string): Two-letter state code or the full state name. Example WA. Example: `<address.state_code>`
- `address.postal_code` (string): Five-digit ZIP or ZIP+4. Example 98229. Example: `<address.postal_code>`
- `address.country_code` (string): ISO-3166 alpha-2 country code of the address. Example US. Example: `<address.country_code>`
- `ip_address` (string): IPv4 or IPv6 captured with the lead. Example 192.0.0.1. Example: `<ip_address>`
- `add_ons` (string): Comma-separated add-ons: email_checks_deliverability, email_checks_age, litigator_checks. Each is an extra $0.005. Example: `<add_ons>`
- `source_id` (string): Optional campaign or cohort id, at most 255 characters. Letters, numbers, spaces, and . _ - : / | #. It cannot begin with -. Example: `<source_id>`

Response schema example:
```json
{
  "phone": {},
  "email": {},
  "address": {},
  "ip_address": {},
  "add_ons": {},
  "warnings": [],
  "errors": {},
  "source_id": "<source_id>"
}
```
