# Check if a phone number has an Amazon account

> Check in real time whether an Amazon customer account is associated with a phone number. Yes, no or unknown per number; unknowns are free.

Canonical: https://mobilevalidate.com/services/amazon-number-check · Last updated: 2026-09-25

![A phone number checked against a grid of generic account tiles, each marked registered, not registered or unknown.](https://mobilevalidate.com/images/account-presence-check.svg)

*Account checks say whether an account exists. They never say whose it is.*


The Amazon check indicates whether an Amazon customer account is associated with a phone number. It runs in real time and in bulk jobs, for numbers from any country, and answers `registered: true`, `false` or `null` (unknown) with the time of the check. It never returns names, addresses, orders or payment details.

## What does the Amazon check tell you?

It tells you whether a phone number is linked to an Amazon account. Amazon lets customers sign in with a mobile number, and in some marketplaces an account can be created with a mobile number instead of an e-mail address. The same customer account is typically used across Amazon's shopping sites and its other consumer services.

- `registered: true`: an Amazon account is associated with the number.
- `registered: false`: a conclusive "no", including customers who registered with e-mail only.
- `registered: null`: no conclusive answer. Not charged.

## Who uses it, and why?

Online shops, marketplaces and delivery services use the Amazon check as one fraud signal among several.

- **Checkout and sign-up protection.** A number that has been used as a shopping login has probably received delivery notifications and one-time codes, which suggests a person's everyday number. See [OTP and sign-up fraud](/use-cases/otp-and-signup-fraud).
- **Promotion and trial abuse.** Batches of new accounts whose numbers have no history on large consumer platforms can be sent for review, with the [carrier lookup](/services/carrier-lookup) added for line type.

For addresses rather than numbers, use the [Amazon e-mail check](/services/amazon-email-check).

## What do you get back?

Each number gets one result under `checks["amazon.registered"]`, with no extra attributes.

| Field | Type | Meaning |
|---|---|---|
| `registered` | boolean or null | `true` account associated, `false` none, `null` unknown |
| `status` | enum | `completed`, `pending`, `unknown`, `unsupported_country` or `failed` |
| `confidence` / `confidence_score` | enum / 0–1 | How sure the answer is |
| `checked_at` | timestamp | When the answer was obtained |
| `cached` / `billed` | boolean | Served from cache; charged or not |
| `reason` | string or null | Why an answer is not conclusive |

## How is it billed?

You pay per number checked, only for conclusive answers. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). Real-time and bulk checks are priced separately. See [pricing](/pricing). Cache hits are free, and `max_age: 0` forces a fresh, billed check.

## What are the limits?

- Real time (`POST /v1/lookup`, up to 100 identifiers) and bulk jobs (`POST /v1/jobs`, up to 50,000 per job), for numbers from every country.
- Up to 20 checks per request. Numbers × checks is capped at 2,000 per lookup and 100,000 per job.
- Requests that look like sequential number ranges or generated e-mail lists are rejected.
- A daily cap per account applies (`GET /v1/limits`).

## How do I use it responsibly?

Treat the answer as a risk signal about a number, not a judgement about a person. Never use it for eligibility decisions. Check only numbers you have a lawful basis to process. The [acceptable use policy](/legal/acceptable-use) forbids profiling, working through number lists and unsolicited messaging. People can object at [/opt-out](/opt-out).

## Example request

With a test key, `+447700900001` answers "registered". See [test mode](/docs/test-mode).

```bash
curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+447700900001"], "checks": ["amazon"]}'
```

Response (excerpt, test mode: the first item of `results`):

```json
{
  "kind": "phone",
  "input": "+447700900001",
  "e164": "+447700900001",
  "country": "GB",
  "number_status": "valid",
  "checks": {
    "amazon.registered": {
      "service": "amazon.registered",
      "status": "completed",
      "registered": true,
      "attributes": null,
      "confidence": "high",
      "confidence_score": 0.99,
      "checked_at": "2026-09-25T14:25:31.154Z",
      "cached": false,
      "age_seconds": 0,
      "billed": false,
      "reason": null,
      "poll_after_ms": null
    }
  },
  "test": true
}
```

## Frequently asked questions

### Does the check reveal orders, addresses or payment data?

No. It only indicates whether an Amazon account is associated with the number. No name, address, order history or payment information is returned.

### Why would a regular Amazon customer come back as not registered?

Amazon accounts can be created with an e-mail address, and a phone number is not always attached. False means no account is associated with this particular number.

### Is there an e-mail version?

Yes. The amazon.email service answers the same question for an e-mail address, also in real time.

### Can I check sellers or business accounts separately?

No. The check does not distinguish account types. It answers only whether an Amazon account is associated with the number.

## Service code and modes

- Code: `amazon.registered` (input: phone number)
- Modes: realtime and bulk · worldwide

## Price (live)

- Realtime (POST /v1/lookup): $0.0005 per check ($0.50 per 1,000)
- Bulk (POST /v1/jobs): $0.0003 per check ($0.30 per 1,000)
- You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate).

## Response fields (from the public catalog)

| Field | Type | Meaning |
|---|---|---|
| registered | boolean or null | true = found, false = not found, null = unknown (not charged) |
| status | enum | completed, pending, unknown, unsupported_country, failed |
| checked_at | timestamp | When the answer was obtained |

_Platform and brand names are used only to describe which service a check refers to. MobileValidate is not affiliated with, endorsed by or sponsored by any of these companies; all trademarks belong to their owners._
