---
updatedAt: 2026-07-15T11:14:58.000Z
agentTools:
  projectIndex: https://doc.b2b-enrichment.com/llms.txt
---

# Mobile Phone Finder API (V2 - Clay Compatible)

V2 of the Mobile Phone Finder — <strong>Clay-compatible</strong>. Behaves exactly like <code>/people/mobile-phone-finder</code>, except that when no person or phone is found it returns <strong>HTTP 200</strong> with an envelope <code>{ status, error, data }</code> and <code>data: null</code> (instead of the v1 <code>404</code>). <br/><br/>
        ✨ <strong>Recommended for Clay:</strong> this V2 endpoint is designed for enriching leads inside Clay. <br/><br/>
        This same V2 handler is also reachable by calling the v1 path <code>POST /people/mobile-phone-finder</code> with the header <code>X-VERSION: 2</code> — the two forms are equivalent. <br/><br/>
        <strong>Search Options:</strong> <br/> &nbsp;&nbsp;&nbsp;&nbsp;• <strong>LinkedIn Search:</strong> Provide only `linkedin` URL (no need for domain/name) <br/> &nbsp;&nbsp;&nbsp;&nbsp;• <strong>Domain + Name Search:</strong> Provide both `domain` and `name` (no need for LinkedIn) <br/><br/>
        💳 <strong>Credit Usage:</strong> 20 credits when a phone is found, 0 otherwise. The charged amount is also returned in the <code>X-Credit</code> response header (<code>-20.0</code>), present only on the charged (phone found) response. Check your balance with <code>GET /credits</code>. <br/><br/>
        Real errors (400 / 402 / 500) and gateway errors (401 / 429) are returned as-is with their real HTTP status — they are not wrapped. <br/><br/>
        The header <code>Content-Type: application/json</code> must be included in the request.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "B2B-Enrichment",
    "version": "1.0.0",
    "contact": {}
  },
  "servers": [
    {
      "url": "https://app.b2b-enrichment.com/api/b2b-enrichment"
    }
  ],
  "paths": {
    "/v2/people/mobile-phone-finder": {
      "post": {
        "tags": [
          "Mobile Phone Finder"
        ],
        "summary": "Mobile Phone Finder API (V2 - Clay Compatible)",
        "description": "V2 of the Mobile Phone Finder — <strong>Clay-compatible</strong>. Behaves exactly like <code>/people/mobile-phone-finder</code>, except that when no person or phone is found it returns <strong>HTTP 200</strong> with an envelope <code>{ status, error, data }</code> and <code>data: null</code> (instead of the v1 <code>404</code>). <br/><br/>\n        ✨ <strong>Recommended for Clay:</strong> this V2 endpoint is designed for enriching leads inside Clay. <br/><br/>\n        This same V2 handler is also reachable by calling the v1 path <code>POST /people/mobile-phone-finder</code> with the header <code>X-VERSION: 2</code> — the two forms are equivalent. <br/><br/>\n        <strong>Search Options:</strong> <br/> &nbsp;&nbsp;&nbsp;&nbsp;• <strong>LinkedIn Search:</strong> Provide only `linkedin` URL (no need for domain/name) <br/> &nbsp;&nbsp;&nbsp;&nbsp;• <strong>Domain + Name Search:</strong> Provide both `domain` and `name` (no need for LinkedIn) <br/><br/>\n        💳 <strong>Credit Usage:</strong> 20 credits when a phone is found, 0 otherwise. The charged amount is also returned in the <code>X-Credit</code> response header (<code>-20.0</code>), present only on the charged (phone found) response. Check your balance with <code>GET /credits</code>. <br/><br/>\n        Real errors (400 / 402 / 500) and gateway errors (401 / 429) are returned as-is with their real HTTP status — they are not wrapped. <br/><br/>\n        The header <code>Content-Type: application/json</code> must be included in the request.",
        "operationId": "People-Mobile-Phone-Finder-V2",
        "security": [
          {
            "Header": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "LinkedIn Search",
                    "type": "object",
                    "required": [
                      "linkedin"
                    ],
                    "properties": {
                      "linkedin": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://www.linkedin.com/in/robin-hennessey-4183b328",
                        "default": "https://www.linkedin.com/in/robin-hennessey-4183b328",
                        "description": "The LinkedIn profile URL for the person to search."
                      },
                      "useCache": {
                        "type": "boolean",
                        "default": true,
                        "description": "Whether to use cached results. Optional."
                      },
                      "fallbackToCache": {
                        "type": "boolean",
                        "default": true,
                        "description": "Whether to fall back to cached results when a live lookup fails. Optional."
                      }
                    }
                  },
                  {
                    "title": "Domain + Name Search",
                    "type": "object",
                    "required": [
                      "domain",
                      "name"
                    ],
                    "properties": {
                      "domain": {
                        "type": "string",
                        "example": "cnyric.org",
                        "default": "cnyric.org",
                        "description": "The domain associated with the person (e.g., company domain)."
                      },
                      "name": {
                        "type": "string",
                        "example": "Melissa Deyneka",
                        "default": "Melissa Deyneka",
                        "description": "The full name of the person to search for."
                      },
                      "useCache": {
                        "type": "boolean",
                        "default": true,
                        "description": "Whether to use cached results. Optional."
                      },
                      "fallbackToCache": {
                        "type": "boolean",
                        "default": true,
                        "description": "Whether to fall back to cached results when a live lookup fails. Optional."
                      }
                    }
                  }
                ]
              },
              "examples": {
                "LinkedIn Search": {
                  "value": {
                    "linkedin": "https://www.linkedin.com/in/robin-hennessey-4183b328"
                  }
                },
                "Domain + Name Search": {
                  "value": {
                    "domain": "cnyric.org",
                    "name": "Melissa Deyneka"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Wrapped response — `data` holds the match when found, or is `null` when no person/phone is found.",
            "headers": {
              "X-Credit": {
                "description": "Credits charged for this call. Present only on the charged (phone found) response.",
                "schema": {
                  "type": "string"
                },
                "example": "-20.0"
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "found": {
                    "summary": "Phone found (20 credits)",
                    "value": {
                      "status": 200,
                      "error": null,
                      "data": {
                        "id": "daaab0f8-bbf1-1383-9167-b8825b1fab85",
                        "linkedin": "https://www.linkedin.com/in/melissa-deyneka-51116125",
                        "data": [
                          [
                            "+13152468945"
                          ]
                        ]
                      }
                    }
                  },
                  "not_found": {
                    "summary": "No person / no phone (0 credits)",
                    "value": {
                      "status": 404,
                      "error": {
                        "timestamp": "2025-10-14T13:27:32.210+00:00",
                        "status": 404,
                        "error": "data not found",
                        "path": ""
                      },
                      "data": null
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Invalid input parameters",
            "content": {
              "application/json": {
                "examples": {
                  "invalid_linkedin": {
                    "summary": "Invalid LinkedIn URL",
                    "value": {
                      "status": 400,
                      "error": "invalid linkedin url provided"
                    }
                  },
                  "missing_required_fields": {
                    "summary": "No LinkedIn and missing domain/name",
                    "value": {
                      "status": 400,
                      "error": "both domain and name are required"
                    }
                  },
                  "invalid_domain": {
                    "summary": "Invalid Domain",
                    "value": {
                      "status": 400,
                      "error": "invalid domain provided"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized (gateway) - Missing or invalid API key",
            "content": {
              "application/json": {
                "example": {
                  "message": "No API key found in request"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required - Not enough balance",
            "content": {
              "application/json": {
                "example": {
                  "status": 402,
                  "error": "not enough balance"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests (gateway) - Rate limit exceeded",
            "content": {
              "application/json": {
                "example": {
                  "message": "API rate limit exceeded"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error - Unexpected error",
            "content": {
              "application/json": {
                "example": {
                  "status": 500,
                  "error": "unexpected error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "Header": {
        "type": "apiKey",
        "in": "header",
        "name": "X-TOKEN"
      }
    }
  },
  "security": [
    {
      "Header": []
    }
  ]
}
```