First-party app
Enrich Layer

Enrich Layer

Enrich people, companies, jobs and schools: profile lookups, dataset search, work and personal emails and phones, reverse email and phone lookup, and the credit balance.

stable Customer Relationship ManagementMarketing

About

Enrich Layer ships in the w6w first-party pack. It declares 25 actions, 3 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.enrichlayer
Version
0.1.0
Author
w6w
Licence
MIT
Categories
Customer Relationship Management · Marketing

Overview

Enrich Layer is a B2B data enrichment API with structured data on over a billion people, tens of millions of companies and hundreds of millions of jobs. This app covers the v2 API: get a person, company, school or job profile from a public profile URL; look people up by name and company, by role at a company, or by email or phone number; search the people and company datasets by criteria; list a company’s employees or a school’s students; count employees and open jobs; find personal emails and phone numbers, request a work email, and check whether an address is disposable.

Every call spends credits, and each action’s description states its cost (profile lookups 1 to 3 credits; employee and student listings per result; search 3 credits per result). The credit balance, the profile pictures and the ID and disposable-email lookups are free.

Health checks verify the API key, whether the API is answering, Enrich Layer’s per-endpoint status page, and the remaining credit balance.

Build with Enrich Layer

Three routes to the same 25 actions. The Workflow tab is generated from Enrich Layer's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

Get Company Employee Count

company-employee-count

Return employee counts for a company from several sources (1 credit; historical dates and fresh counts cost extra).

Search Company Employees by Title

company-employee-search

Search a company's employees by job title keywords (10 credits plus per-result charges).

List Company Employees

company-employees-list

List a company's employees (3 credits per employee returned). Filters, sorting, enrichment and freshness add credits; see each field.

Look Up Company by Numeric ID

company-id-lookup

Return the vanity ID of a company from its internal numeric ID (free).

Look Up Company

company-lookup

Find a company's profile URL from its name and/or domain (2 credits, charged on any 200 response including no match).

Get Company Profile

company-profile-get

Return the structured profile of a company from its profile URL (1 credit). Categories, funding, exits, acquisitions and extras cost 1 extra credit each.

Get Company Logo

company-profile-picture-get

Return a temporary URL for a company's logo, from a cached profile (free).

Search Companies

company-search

Search the company dataset by criteria (3 credits per company URL returned). Expressions use boolean search syntax and are limited to 255 characters each.

Get Credit Balance

credit-balance-get

Return the account's remaining API credits (free).

Check Disposable Email

disposable-email-check

Check whether an email address belongs to a disposable or free email service (free).

Count Company Jobs

job-count

Count the jobs posted by a company (2 credits).

Get Job Profile

job-profile-get

Return the structured data of a job posting from its URL (2 credits). Job Search returns job URLs.

Search Company Jobs

job-search

List jobs posted by a company (2 credits). Use the company's `search_id` from its profile.

Look Up Person by Name and Company

person-lookup

Find a person's profile URL from a first name and a company name or domain (2 credits). Credits are charged even on a null result unless similarity checks are skipped.

Get Person Profile

person-profile-get

Return the structured profile of a person from their public profile, Twitter/X or Facebook URL (1 credit). Optional enrichments (personal email, personal phone, extra details, social IDs) cost extra credits each.

Get Person Profile Picture

person-profile-picture-get

Return a temporary URL for a person's profile picture, from a cached profile (free).

Look Up Person by Role

person-role-lookup

Return the person who most closely matches a role at a company, for example the CTO of Apple (3 credits, charged on any 200 response).

Search People

person-search

Search the people dataset by criteria (3 credits per profile URL returned). Expressions use boolean search syntax and are limited to 255 characters each.

Find Personal Phone Numbers

personal-contact-number-lookup

Find personal phone numbers for a social profile (1 credit per number returned).

Find Personal Emails

personal-email-lookup

Find personal email addresses for a social profile (1 credit per email returned; precise validation costs 1 more per email).

Reverse Email Lookup

reverse-email-lookup

Resolve a person profile from a personal or work email address (3 credits; superficial depth is free on no match).

Reverse Phone Lookup

reverse-phone-lookup

Find social profiles from a phone number (3 credits).

Get School Profile

school-profile-get

Return the structured profile of a school from its profile URL (1 credit).

List School Students

school-students-list

List the students of a school (3 credits per student returned). Filters, sorting and enrichment add credits; see each field.

Request Work Email

work-email-lookup

Queue a work-email lookup for a person profile (3 credits). The lookup may not finish immediately: pass a callback URL and Enrich Layer calls it once with the result. Only the queue length comes back synchronously.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying Enrich Layer's real ids.

{
  "manifestVersion": "2",
  "name": "enrichlayer-example",
  "steps": [
    {
      "id": "company-employee-count",
      "uses": {
        "app": "io.w6w.enrichlayer",
        "action": "company-employee-count",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "url": "<url>"
      }
    }
  ]
}

Here are some of the things you can do

  • Get Company Employee Count

    read
    company-employee-count
  • Search Company Employees by Title

    search
    company-employee-search
  • List Company Employees

    search
    company-employees-list
  • Look Up Company by Numeric ID

    read
    company-id-lookup
  • Look Up Company

    read
    company-lookup

+20 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for Enrich Layer, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to Enrich Layer. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "company-employee-count",
  payload: {
    url: "<value>",
    // coyNameMatch: "<value>",
    // atDate: "<value>",
    // useCache: "<value>",
    // estimatedEmployeeCount: "<value>",
    // employmentStatus: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action company-employee-count --payload '{"url":"<value>"}'

Give an AI agent Enrich Layer — without giving it Enrich Layer's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.enrichlayer#company-employee-count",
    "input": {
      "url": "<url>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's Enrich Layer connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

Enrich Layer's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. Enrich Layer itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

Enrich Layer declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

Enrich Layer platform status

status.enrichlayer.com (Cachet /api/v1/components): one component per API endpoint. Any impaired endpoint is degraded; down only if every endpoint reports a major outage.

dependency

API reachability

Unauthenticated GET of /credit-balance. Enrich Layer's documented 401 `{code, description, name}` envelope is the expected healthy answer; credential validity is the `auth:api-key` check's job.

quota

Credit balance

Credits this account can still spend, from a signed `GET /credit-balance`.