# Get contacts for an organisation
Source: https://docs.snitcher.com/api-reference/contacts/get-contacts-for-an-organisation
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{workspaceUuid}/contacts
# Reveal an email for an organisation contact
Source: https://docs.snitcher.com/api-reference/contacts/reveal-an-email-for-an-organisation-contact
https://app.snitcher.com/api/docs?api-docs.json put /v1/workspaces/{workspaceUuid}/contacts/{contactUuid}/reveal-email
# Clear a custom field value on an organisation
Source: https://docs.snitcher.com/api-reference/custom-field-values/clear-a-custom-field-value-on-an-organisation
https://app.snitcher.com/api/docs?api-docs.json delete /v1/workspaces/{workspaceUuid}/organisations/{organisationUuid}/custom-fields/{key}
# List custom field values for an organisation
Source: https://docs.snitcher.com/api-reference/custom-field-values/list-custom-field-values-for-an-organisation
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{workspaceUuid}/organisations/{organisationUuid}/custom-fields
# Set a custom field value on an organisation
Source: https://docs.snitcher.com/api-reference/custom-field-values/set-a-custom-field-value-on-an-organisation
https://app.snitcher.com/api/docs?api-docs.json put /v1/workspaces/{workspaceUuid}/organisations/{organisationUuid}/custom-fields/{key}
# Set multiple custom field values on an organisation
Source: https://docs.snitcher.com/api-reference/custom-field-values/set-multiple-custom-field-values-on-an-organisation
https://app.snitcher.com/api/docs?api-docs.json patch /v1/workspaces/{workspaceUuid}/organisations/{organisationUuid}/custom-fields
Set one or more custom field values in a single request (at most 50 per request). Unknown field keys are created automatically, with their type inferred from the value — so an integration does not have to pre-create fields. Values are validated against each field's type, and for select/status/multi-select fields against the field's defined options; an unusable value, an off-list option, or a bad key returns a 422 naming the offending key. Validation covers the whole payload before anything is written, so a rejected key never leaves earlier keys half-applied. Every value must be non-empty: sending an empty array does not clear a multi-select — use the DELETE custom-fields/{key} endpoint to remove a value.
# Create a custom field definition
Source: https://docs.snitcher.com/api-reference/custom-fields/create-a-custom-field-definition
https://app.snitcher.com/api/docs?api-docs.json post /v1/workspaces/{workspaceUuid}/custom-fields
# Delete a custom field definition
Source: https://docs.snitcher.com/api-reference/custom-fields/delete-a-custom-field-definition
https://app.snitcher.com/api/docs?api-docs.json delete /v1/workspaces/{workspaceUuid}/custom-fields/{key}
# Get a custom field definition
Source: https://docs.snitcher.com/api-reference/custom-fields/get-a-custom-field-definition
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{workspaceUuid}/custom-fields/{key}
# List custom field definitions
Source: https://docs.snitcher.com/api-reference/custom-fields/list-custom-field-definitions
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{workspaceUuid}/custom-fields
# Update a custom field definition
Source: https://docs.snitcher.com/api-reference/custom-fields/update-a-custom-field-definition
https://app.snitcher.com/api/docs?api-docs.json patch /v1/workspaces/{workspaceUuid}/custom-fields/{key}
# Add a tag to an organisation
Source: https://docs.snitcher.com/api-reference/organisations/add-a-tag-to-an-organisation
https://app.snitcher.com/api/docs?api-docs.json post /v1/workspaces/{workspaceUuid}/organisations/{organisationUuid}/tags
# Get an organisation
Source: https://docs.snitcher.com/api-reference/organisations/get-an-organisation
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{workspaceUuid}/organisations/{organisationUuid}
# List organisations
Source: https://docs.snitcher.com/api-reference/organisations/list-organisations
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{workspaceUuid}/organisations
# List organisations using advanced filters
Source: https://docs.snitcher.com/api-reference/organisations/list-organisations-using-advanced-filters
https://app.snitcher.com/api/docs?api-docs.json post /v1/workspaces/{workspaceUuid}/organisations
# Remove a tag from an organisation
Source: https://docs.snitcher.com/api-reference/organisations/remove-a-tag-from-an-organisation
https://app.snitcher.com/api/docs?api-docs.json delete /v1/workspaces/{workspaceUuid}/organisations/{organisationUuid}/tags
# List all segments in a workspace
Source: https://docs.snitcher.com/api-reference/segments/list-all-segments-in-a-workspace
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{workspaceUuid}/segments
# Overview of the sessions in a date range
Source: https://docs.snitcher.com/api-reference/sessions/overview-of-the-sessions-in-a-date-range
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{workspaceUuid}/sessions
Lists sessions within a date range. A date range is required: provide either `date` or `date_from` (optionally with `date_to`), otherwise the request fails with a 400.
# Overview of the sessions of an organisation
Source: https://docs.snitcher.com/api-reference/sessions/overview-of-the-sessions-of-an-organisation
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{workspaceUuid}/organisations/{organisationUuid}/sessions
# Get the authenticated user's profile
Source: https://docs.snitcher.com/api-reference/user/get-the-authenticated-users-profile
https://app.snitcher.com/api/docs?api-docs.json get /v1/me
# Create a new tag for a workspace
Source: https://docs.snitcher.com/api-reference/workspaces/create-a-new-tag-for-a-workspace
https://app.snitcher.com/api/docs?api-docs.json post /v1/workspaces/{uuid}/tags
# Create a new workspace
Source: https://docs.snitcher.com/api-reference/workspaces/create-a-new-workspace
https://app.snitcher.com/api/docs?api-docs.json post /v1/workspaces
# Delete a workspace
Source: https://docs.snitcher.com/api-reference/workspaces/delete-a-workspace
https://app.snitcher.com/api/docs?api-docs.json delete /v1/workspaces/{uuid}
# Get details of a specific workspace
Source: https://docs.snitcher.com/api-reference/workspaces/get-details-of-a-specific-workspace
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces/{uuid}
# Get the user's workspaces
Source: https://docs.snitcher.com/api-reference/workspaces/get-the-users-workspaces
https://app.snitcher.com/api/docs?api-docs.json get /v1/workspaces
# Invite a user to a workspace
Source: https://docs.snitcher.com/api-reference/workspaces/invite-a-user-to-a-workspace
https://app.snitcher.com/api/docs?api-docs.json post /v1/workspaces/{uuid}/users/invite
# Update workspace details
Source: https://docs.snitcher.com/api-reference/workspaces/update-workspace-details
https://app.snitcher.com/api/docs?api-docs.json patch /v1/workspaces/{uuid}
# Introduction
Source: https://docs.snitcher.com/powered-by-snitcher/ip2company/introduction
Turn any IP address into company intelligence with the Snitcher IP to Company API. Real-time company identification for B2B applications.
**Please Note:** The IP to Company API is a standalone offering and is not included with our standard product plans. If you'd like to purchase or learn more,
please answer a few quick questions so our team can reach out.
## What is IP to Company?
**IP to Company is a real-time API that identifies which company an IP address belongs to.** Send us an IP address, and we'll return detailed firmographic data including company name, industry, size, location, and social profiles.
Use it to enrich your application with company intelligence—personalize experiences, qualify leads, route support tickets, or power your own visitor identification features.
### Key Use Cases
Customize landing pages, CTAs, and content based on the visitor's company, industry, or size—in real-time.
Automatically append company data to form submissions, signups, or support tickets.
Power your own dashboards with company identification for website analytics or CRM enrichment.
Verify that business visitors are who they claim to be by matching IP data against company records.
***
## How It Works
The API is simple: send an IP address, receive company data.
```mermaid theme={null}
flowchart LR
A[Your Application] -->|IP Address| B[IP to Company API]
B -->|Company Data| A
```
### Single Request, Rich Response
```bash theme={null}
curl -X POST 'https://api.snitcher.com/company/find?ip=203.0.113.42' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Accept: application/json'
```
When we identify a company, you'll receive:
| Data | Example |
| ------------------ | ------------------------- |
| **Company Name** | Acme Corporation |
| **Domain** | acme.com |
| **Industry** | Information Technology |
| **Employee Range** | 50-200 employees |
| **Annual Revenue** | $10M - $50M |
| **Location** | San Francisco, CA, USA |
| **LinkedIn** | linkedin.com/company/acme |
The API returns a `type` field indicating whether the IP belongs to a `business`, `isp`, or other network type—so you can handle each case appropriately.
### Two Ways to Identify
You can look up a company by **IP address**, or—if you also run [Radar](/powered-by-snitcher/radar/introduction)—by a visitor's **session ID** for a higher match rate. See the [Quickstart](/powered-by-snitcher/ip2company/quickstart#input-methods) for both input methods and when to use each.
***
## Why Snitcher?
Our IP intelligence database is the same one that powers the Snitcher platform, trusted by thousands of B2B companies for visitor identification.
* **Comprehensive coverage**: Continuously updated database of business IP ranges worldwide
* **Fast response times**: Built for real-time use cases with low-latency responses
* **Detailed firmographics**: Not just company name—get industry, size, revenue, location, and social profiles
* **Simple integration**: RESTful API with straightforward authentication
***
## Getting Started
Authentication, endpoints, and example requests
Industry categories, company sizes, and country codes
# Quickstart
Source: https://docs.snitcher.com/powered-by-snitcher/ip2company/quickstart
The Snitcher IP to Company API allows you to identify companies based on IP addresses, providing detailed business insights for B2B use cases.
**Please Note:** The IP 2 Company API is a standalone offering and is not included with our standard product plans. If you'd like to purchase or learn more about IP 2 Company,
please answer a few quick questions so our team can reach out.
## Authentication
Authentication is done via the API key which will be provided to you separately.
Requests are authenticated by passing your API key as a bearer token in an `Authorization` header.
```bash theme={null}
curl --location --request POST 'https://api.snitcher.com/company/find?ip={IP}' \
--header 'Authorization: Bearer {key}' \
--header 'Accept: application/json'
```
## Rate Limits
* **600 requests per minute**
Higher rate limits can be enabled on your account upon request. These are typically included within your contract terms.
## Input Methods
You can identify a company in two ways. Pick the one that matches how you've integrated Snitcher:
| Input | When to use | Endpoint |
| -------------- | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| **IP address** | You have the visitor's IP address and aren't running Radar. | `POST /company/find?ip={IP}` |
| **Session ID** | You're also running [Radar](/powered-by-snitcher/radar/introduction) and have a visitor's `session_uuid`. | `POST /radar/operator/v1/tracking-scripts/{trackingScriptId}/company/find` |
**Running Radar? Prefer the session ID.** A session lookup resolves the visitor through Radar's fingerprinting model rather than the IP alone, which yields a higher match rate than a raw IP lookup.
### By IP Address
Send the IP address as the `ip` query parameter. This is the default method described throughout this page.
```bash theme={null}
curl --location --request POST 'https://api.snitcher.com/company/find?ip={IP}' \
--header 'Authorization: Bearer {key}' \
--header 'Accept: application/json'
```
### By Session ID
When you also run Radar, every visitor session has a `session_uuid`. Pass it to the Radar identification endpoint to identify the company behind that session. See [Receiving Events](/powered-by-snitcher/radar/receiving-events) for how session IDs are generated and delivered.
```bash theme={null}
curl --location --request POST 'https://api.snitcher.com/radar/operator/v1/tracking-scripts/{trackingScriptId}/company/find' \
--header 'Authorization: Bearer {key}' \
--header 'Content-Type: application/json' \
--data '{
"session_uuid": "42b7c5e0-76c0-4f8d-9b7c-6b8e1a2d3f45"
}'
```
**Session IDs are short-lived.** By default this lookup only covers sessions from the **last 2 days**. To identify an older session, add the optional `since` field — an ISO 8601 date (UTC) naming the day the session took place. The date may be up to **30 days** in the past and cannot be in the future. Requests for a session that falls outside the queried window won't match.
```bash theme={null}
curl --location --request POST 'https://api.snitcher.com/radar/operator/v1/tracking-scripts/{trackingScriptId}/company/find' \
--header 'Authorization: Bearer {key}' \
--header 'Content-Type: application/json' \
--data '{
"session_uuid": "42b7c5e0-76c0-4f8d-9b7c-6b8e1a2d3f45",
"since": "2026-05-11"
}'
```
## Endpoint
The API endpoint is as follows:
```
https://api.snitcher.com/company/find?ip={IP}
```
## Example Request
Here is an example of a curl request to this endpoint:
```bash theme={null}
curl --location --request POST 'https://api.snitcher.com/company/find?ip={IP}' \
--header 'Authorization: Bearer {key}' \
--header 'Accept: application/json'
```
## Response Codes
The Snitcher API uses standard HTTP status codes to indicate the success or failure of an API request. Below are examples of different responses you may encounter:
### HTTP 429 - Rate Limit Exceeded
```json theme={null}
{
"message": "Too Many Attempts."
}
```
### HTTP 403 - Quota Exceeded
```json theme={null}
{
"message": "You have exceeded your allowed quota. Please upgrade to a plan that allows more volume or wait for your billing cycle to reset."
}
```
### HTTP 202 - Enrichment Queued
```json theme={null}
{
"status": 202,
"message": "Queued for enrichment. Please retry this request in a few seconds."
}
```
### HTTP 200 - Identified Company Response
```json theme={null}
{
"ip": "127.0.0.1",
"fuzzy": true,
"domain": "snitcher.com",
"type": "business",
"company": {
"name": "Snitcher",
"domain": "snitcher.com",
"website": "https://snitcher.com",
"industry": "Information Technology and Services",
"founded_year": "2015",
"employee_range": "2-10 employees",
"annual_revenue": 2000000,
"total_funding": null,
"location": "Oude Enghweg 2, 1217 JC Hilversum, Netherlands",
"description": "Snitcher supports B2B teams by identifying the company's anonymous website visitors work for.",
"phone": "+1 (120) 261-5475",
"geo": {
"country": "Netherlands",
"country_code": "NL",
"state": "Noord-Holland",
"state_code": "NH",
"postal_code": "1217 JC",
"city": "Hilversum",
"street": "Oude Enghweg",
"street_number": "2"
},
"profiles": {
"crunchbase": {
"handle": "snitcher",
"url": "https://crunchbase.com/organization/snitcher"
},
"linkedin": {
"handle": "snitcher",
"url": "https://linkedin.com/companies/snitcher"
}
}
},
"geoIP": {
"country": "Netherlands",
"country_code": "NL",
"city": "Almere Stad",
"state": "Flevoland"
}
}
```
### **HTTP 404 - Non-Identified Response (ISP)**
```json theme={null}
{
"ip": "223.19.38.219",
"fuzzy": false,
"domain": null,
"type": "isp",
"geoIP": {
"country": "Hong Kong",
"country_code": "HK",
"city": "Hong Kong",
"state": "Hong Kong"
}
}
```
## Checking Usage
The API endpoint is as follows:
```
https://api.snitcher.com/company/usage
```
### **HTTP 200 - Example Response**
```json theme={null}
{
"status": "trial",
"credits": {
"total": 100,
"used": 0,
"remaining": 100
},
"billing_cycle": {
"starts_at": "2025-03-23T14:10:04.000000Z",
"ends_at": "2025-04-23T14:10:04.000000Z"
}
}
```
# Identify company for a session
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/company/identify-company-for-a-session
https://app.snitcher.com/api/radar/docs?api-radar-docs.json post /radar/operator/v1/tracking-scripts/{trackingScriptId}/company/find
Returns company information for the current visitor's session when available. Provide a session UUID when you want to restrict lookup to a specific session.
# Create a tracking script filter
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/tracking-scripts/create-a-tracking-script-filter
https://app.snitcher.com/api/radar/docs?api-radar-docs.json post /radar/operator/v1/tracking-scripts/{trackingScriptId}/filters
# Delete a tracking script filter
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/tracking-scripts/delete-a-tracking-script-filter
https://app.snitcher.com/api/radar/docs?api-radar-docs.json delete /radar/operator/v1/tracking-scripts/{trackingScriptId}/filters/{filterUuid}
# Generate a tracking script
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/tracking-scripts/generate-a-tracking-script
https://app.snitcher.com/api/radar/docs?api-radar-docs.json post /radar/operator/v1/tracking-scripts
# Get a single tracking script
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/tracking-scripts/get-a-single-tracking-script
https://app.snitcher.com/api/radar/docs?api-radar-docs.json get /radar/operator/v1/tracking-scripts/{trackingScriptId}
Returns a single tracking script by ID
# List tracking script filters
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/tracking-scripts/list-tracking-script-filters
https://app.snitcher.com/api/radar/docs?api-radar-docs.json get /radar/operator/v1/tracking-scripts/{trackingScriptId}/filters
# List tracking scripts
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/tracking-scripts/list-tracking-scripts
https://app.snitcher.com/api/radar/docs?api-radar-docs.json get /radar/operator/v1/tracking-scripts
Returns a paginated list of tracking scripts for the given workspace. Filtering by description or internal identifier is supported.
# Replace tracking script filters
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/tracking-scripts/replace-tracking-script-filters
https://app.snitcher.com/api/radar/docs?api-radar-docs.json put /radar/operator/v1/tracking-scripts/{trackingScriptId}/filters
# Update a tracking script
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/tracking-scripts/update-a-tracking-script
https://app.snitcher.com/api/radar/docs?api-radar-docs.json patch /radar/operator/v1/tracking-scripts/{trackingScriptId}
# Get IP-to-Company (Reveal API) credit usage
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/usage/get-ip-to-company-reveal-api-credit-usage
https://app.snitcher.com/api/radar/docs?api-radar-docs.json get /radar/operator/v1/company/usage
Returns billable IP-to-Company usage for the current billing cycle, per tracking script. A unit is a distinct successful (HTTP 200) de-anonymisation deduped per (tracking script, monthly window) — the exact figure billing charges a credit for. Operators reconcile this per cycle to know which lookups were billed.
# Get tracking script usage
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/usage/get-tracking-script-usage
https://app.snitcher.com/api/radar/docs?api-radar-docs.json get /radar/operator/v1/usage
Returns usage data for tracking scripts in the workspace
# Get webhook configuration
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/webhooks/get-webhook-configuration
https://app.snitcher.com/api/radar/docs?api-radar-docs.json get /radar/operator/v1/webhooks
# Update webhook configuration
Source: https://docs.snitcher.com/powered-by-snitcher/radar-api-reference/webhooks/update-webhook-configuration
https://app.snitcher.com/api/radar/docs?api-radar-docs.json patch /radar/operator/v1/webhooks
# Capturing Events
Source: https://docs.snitcher.com/powered-by-snitcher/radar/capturing-events
How Radar tracks pageviews, interactions, and custom behavior on your customers' sites.
Radar's tracking script is designed to capture key user interactions automatically while giving you the tools to let your customers track what's unique to their sites.
## Automatic Event Capture
Once installed on your customer's site, Radar automatically captures `$pageview` events. You can enable more advanced automatic event tracking by setting the appropriate [feature flags](/powered-by-snitcher/radar/configuration#feature-flags) in your configuration.
### Page Tracking (Enabled by Default)
* **`$pageview`**: Fired every time a page is loaded or the URL hash changes. Includes details like the page URL, title, and referrer. When a user navigates away from a page, Radar captures engagement data (total time on page and engaged time) and includes it in the event as `$total_time_on_page` and `$engaged_time_on_page` properties.
### Form Tracking (`features.formTracking`)
When you enable `formTracking`, Radar will automatically capture the following events on your customers' websites:
* **`$form_start`**: Fired when a user first interacts with a form field (e.g., focus or input). Includes the form's ID.
* **`$form_submit`**: Fired when a user successfully submits a form. The event includes the form's name, ID, and all non-sensitive field values.
* **`$form_abandon`**: Fired when a user interacts with a form's fields but navigates away from the page without submitting.
Radar automatically redacts data from fields that appear to be sensitive (e.g., fields with names like `password`, `credit_card`, `ssn`).
### Click & Download Tracking (`features.clickTracking`, `features.downloadTracking`)
* **Click Tracking**: When you enable `clickTracking`, Radar automatically captures clicks on `` and `