---
updatedAt: 2026-09-29T14:39:45.000Z
agentTools:
  projectIndex: https://docs.apollo.io/llms.txt
---

# Get Complete Person Info

 

<table>
  <thead>
    <tr style="background-color :#FEFFD9; color:#000000">
      <th colspan="2" align="left">Endpoint essentials</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>API key access</strong></td>
      <td><code>api/v1/people/show</code> or <code>Master API key</code></td>
    </tr>
    <tr>
      <td><strong>OAuth scopes</strong></td>
      <td><code>person_read</code></td>
    </tr>
    <tr>
      <td><strong>Free account access</strong></td>
      <td>Requires an Apollo account registered with a work email address. Additional account eligibility requirements may apply. Paid accounts aren't affected.</td>
    </tr>
    <tr>
      <td><strong>Credit usage</strong></td>
      <td><code>1 credit per person</code><br><a href="https://docs.apollo.io/docs/api-pricing">Learn more about API pricing and credits</a>.</td>
    </tr>
  </tbody>
</table>

Use the get complete person info endpoint to retrieve complete details about a person in the Apollo database, including employment history, location, and the full details of the person's current organization.

### Reading the `email` field

This endpoint doesn't reveal verified emails for people you haven't saved as contacts. Instead of the address — and instead of `null` — `email` contains the fixed placeholder `email_not_unlocked@domain.com`, and every unrevealed person returns that same value.

Because the placeholder is a non-empty string, it passes checks that assume an email is either usable or absent:

* **Truthiness and null checks don't catch it.** `if (person.email)` succeeds, so code may treat an unrevealed person as though you have their address.

* **`email` breaks as a dedupe or upsert key.** Identical placeholders collapse unrelated people into one record.

`email_status` does **not** distinguish it either: it describes the address Apollo holds internally, so it reads `verified` even when `email` is the placeholder. Use it to judge deliverability once you have a real address, not to decide whether you have one. The field only ever returns one of three values — `verified`, `extrapolated`, or `unavailable`.

**Recommended handling:** compare `email` against the literal placeholder string and treat a match as "no email available yet". The response also omits `contact_id` and `revealed_for_current_team` for people who aren't your contacts, which is a useful second signal. To get the real address, call <a href="https://docs.apollo.io/reference/people-enrichment">people enrichment</a> or <a href="https://docs.apollo.io/reference/bulk-people-enrichment">bulk people enrichment</a>, which never substitute the placeholder.

| Person's situation                                          | `email`                         | `email_status` |
| ----------------------------------------------------------- | ------------------------------- | -------------- |
| Verified email, not your contact                            | `email_not_unlocked@domain.com` | `verified`     |
| Verified email, already your contact                        | The contact's real address      | `verified`     |
| No verified email, but Apollo holds an extrapolated address | The extrapolated address        | `extrapolated` |
| No email available                                          | `null`                          | `unavailable`  |

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "apollo-rest-api",
    "summary": "Programmatic access to Apollo's sales intelligence and engagement platform — data enrichment, prospect and company search, and go-to-market workflow management.",
    "description": "The Apollo API provides programmatic access to [Apollo](https://www.apollo.io/), the all-in-one sales intelligence and engagement platform. Use it to enrich people and company data (individually or in bulk), search Apollo's database of over 240 million contacts and 30 million companies, and manage accounts, contacts, deals, sequences, tasks, calls, and conversations in your go-to-market workflows.\n\n## Base URL\n\nAll API requests are made to `https://api.apollo.io/api/v1`.\n\n## Authentication\n\n- **Apollo users** authenticate with an API key passed in the `x-api-key` request header. See [Create API Keys](https://docs.apollo.io/docs/create-api-key).\n- **Apollo partners** building integrations on behalf of mutual users authenticate with the [OAuth 2.0 authorization flow](https://docs.apollo.io/docs/use-oauth-20-authorization-flow-to-access-apollo-user-information-partners).\n\n## Rate limits & credits\n\nRate limits and credit consumption depend on your [Apollo pricing plan](https://docs.apollo.io/docs/api-pricing). Check your current limits and usage with the [view API usage stats and rate limits](https://docs.apollo.io/reference/view-api-usage-stats) endpoint. For more details, see [Rate Limits](https://docs.apollo.io/reference/rate-limits) and the [API FAQs](https://docs.apollo.io/docs/apollo-api-faqs).\n\nNew to the API? Start with the [Apollo API overview](https://docs.apollo.io/reference/apollo-api).",
    "termsOfService": "https://www.apollo.io/terms/api",
    "contact": {
      "name": "Apollo API Support",
      "url": "https://docs.apollo.io/"
    },
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.apollo.io/api/v1"
    }
  ],
  "tags": [
    {
      "name": "Search",
      "description": "Search Apollo's database of people, companies, news articles, and job postings."
    }
  ],
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "[Recommended] API key, passed in the `x-api-key` request header.\nSee [Create API Keys](https://docs.apollo.io/docs/create-api-key)."
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "OAuth 2.0 access token, used by Apollo partners building integrations.\nSee the [OAuth 2.0 authorization flow](https://docs.apollo.io/docs/use-oauth-20-authorization-flow-to-access-apollo-user-information-partners)."
      }
    }
  },
  "security": [
    {
      "apiKey": []
    },
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/people/{id}": {
      "get": {
        "summary": "Get complete person info",
        "description": "## Endpoint essentials\n\n**API key access:** `api/v1/people/show` or `Master API key`\n\n**OAuth scopes:** `person_read`\n\n**Free account access:** Requires an Apollo account registered with a work email address. Additional account eligibility requirements may apply. Paid accounts aren't affected.\n\n**Credit usage:** `1 credit per person` — [Learn more about API pricing and credits](https://docs.apollo.io/docs/api-pricing).\n\nUse the get complete person info endpoint to retrieve complete details about a person in the Apollo database, including employment history, location, and the full details of the person's current organization.\n\n### Reading the `email` field\n\nThis endpoint doesn't reveal verified emails for people you haven't saved as contacts. Instead of the address — and instead of `null` — `email` contains the fixed placeholder `email_not_unlocked@domain.com`, and every unrevealed person returns that same value.\n\nBecause the placeholder is a non-empty string, it passes checks that assume an email is either usable or absent:\n\n* **Truthiness and null checks don't catch it.** `if (person.email)` succeeds, so code may treat an unrevealed person as though you have their address.\n\n* **`email` breaks as a dedupe or upsert key.** Identical placeholders collapse unrelated people into one record.\n\n`email_status` does **not** distinguish it either: it describes the address Apollo holds internally, so it reads `verified` even when `email` is the placeholder. Use it to judge deliverability once you have a real address, not to decide whether you have one. The field only ever returns one of three values — `verified`, `extrapolated`, or `unavailable`.\n\n**Recommended handling:** compare `email` against the literal placeholder string and treat a match as \"no email available yet\". The response also omits `contact_id` and `revealed_for_current_team` for people who aren't your contacts, which is a useful second signal. To get the real address, call [people enrichment](https://docs.apollo.io/reference/people-enrichment) or [bulk people enrichment](https://docs.apollo.io/reference/bulk-people-enrichment), which never substitute the placeholder.\n\n| Person's situation | `email` | `email_status` |\n| --- | --- | --- |\n| Verified email, not your contact | `email_not_unlocked@domain.com` | `verified` |\n| Verified email, already your contact | The contact's real address | `verified` |\n| No verified email, but Apollo holds an extrapolated address | The extrapolated address | `extrapolated` |\n| No email available | `null` | `unavailable` |",
        "tags": [
          "Search"
        ],
        "operationId": "get_people{id}",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "examples": {
                  "OK": {
                    "value": {
                      "person": {
                        "id": "65f0a1b2c3d4e5f600012345",
                        "first_name": "Ava",
                        "last_name": "Ruiz",
                        "name": "Ava Ruiz",
                        "linkedin_url": "http://www.linkedin.com/in/ava-ruiz-123456",
                        "title": "Founder & CEO",
                        "photo_url": "https://media.sumware.com/photos/ava-ruiz.jpg",
                        "twitter_url": null,
                        "github_url": null,
                        "facebook_url": null,
                        "extrapolated_email_confidence": null,
                        "headline": "Founder & CEO at Sumware Software",
                        "organization_id": "5f1a2b3c4d5e6f0001234567",
                        "employment_history": [
                          {
                            "_id": "65f0a1b2c3d4e5f600012346",
                            "created_at": null,
                            "current": true,
                            "degree": null,
                            "description": null,
                            "emails": null,
                            "end_date": null,
                            "grade_level": null,
                            "kind": null,
                            "major": null,
                            "organization_id": "5f1a2b3c4d5e6f0001234567",
                            "organization_name": "Sumware Software",
                            "raw_address": null,
                            "start_date": "2015-01-01",
                            "title": "Founder & CEO",
                            "updated_at": null,
                            "id": "65f0a1b2c3d4e5f600012346",
                            "key": "65f0a1b2c3d4e5f600012346"
                          }
                        ],
                        "street_address": "172 Bryant Street",
                        "city": "San Francisco",
                        "state": "California",
                        "country": "United States",
                        "postal_code": "94105",
                        "formatted_address": "172 Bryant Street, San Francisco, California, United States, 94105",
                        "time_zone": "America/Los_Angeles",
                        "email": "email_not_unlocked@domain.com",
                        "email_status": "verified"
                      }
                    },
                    "summary": "OK"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "examples": {
                  "Check API Key": {
                    "value": "Invalid API key. See https://docs.apollo.io/reference/authentication for how to authenticate.",
                    "summary": "Check API Key"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "examples": {
                  "Need Master API Key": {
                    "value": "{\n  \"error\": \"This API key is not authorized to access api/v1/people/show. Request an API key from your administrator that includes this endpoint in its configured scope.\",\n  \"error_code\": \"API_INACCESSIBLE\"\n}",
                    "summary": "Need Master API Key"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "examples": {
                  "Person Does Not Exist": {
                    "value": "{\n  \"error\": \"Person does not exist.\"\n}",
                    "summary": "Check Person ID"
                  },
                  "Obsolete Data": {
                    "value": "{\n  \"error\": \"This is obsolete data.\"\n}",
                    "summary": "Person record is no longer available"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The Apollo ID for the person that you want to research. <br><br>To find person IDs, call the <a href=\"https://docs.apollo.io/reference/people-api-search\" target=\"_blank\">people search endpoint</a> and identify the `id` value for the person. <br><br>Example: `65f0a1b2c3d4e5f600012345`",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ]
      }
    }
  },
  "x-readme": {
    "headers": [
      {
        "key": "Cache-Control",
        "value": "no-cache"
      },
      {
        "key": "Content-Type",
        "value": "application/json"
      }
    ],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```