> ## Documentation Index
> Fetch the complete documentation index at: https://docs.minerva.io/llms.txt
> Use this file to discover all available pages before exploring further.

# LinkedIn contact info

> Look up ranked contact info for LinkedIn member IDs.

```python theme={null}
mc.api.get_li_contact_info(["1000000001", "1000000002"])
```

Pass LinkedIn member IDs (the numeric ID, not the URL); get back ranked
contact info per ID.

## Parameters

<ParamField path="records" type="list[str]" required>
  LinkedIn member-id strings (1–500).
</ParamField>

<ParamField path="version" type="str" default="&#x22;v2&#x22;">
  API version. `"v1"` is also accepted.
</ParamField>

<ParamField path="presence_only" type="bool" default="False">
  v2 only — return presence flags instead of the contact values themselves.
  Useful for quickly checking how much you'd get from a full lookup before
  spending the credit.
</ParamField>

<ParamField path="dry_run" type="bool" default="False">
  Validate input locally without sending.
</ParamField>

## Response shape

```python theme={null}
result = mc.api.get_li_contact_info(["1000000001"])
# {
#   "results": [
#     {
#       "li_member_id": "1000000001",
#       "emails": [{"email_rank": 1, "email_address": "..."}, ...],
#       "phones": [...],
#       ...
#     }
#   ]
# }
```

The response is the raw API JSON (a dict) rather than a typed pydantic model
— the shape is forward-compatible, so new fields the server adds don't break
older clients.

## `presence_only` (v2)

When `True`, the response returns presence flags rather than values:

```python theme={null}
mc.api.get_li_contact_info(["1000000001"], presence_only=True)
# Returns "this member has 2 emails, 1 phone" rather than the values themselves.
```

## Validation

`dry_run=True` returns the validated `LiContactInfoRequest` without sending;
an empty `records` list (or > 500 entries) raises `MinervaValidationError`
locally. See [Validation](/sdk/guides/validation-dry-run).
