SMS & messages
Who sent me this text?
Coverage: Works with senders from any country. Names are compared with the brands in NoCall’s SMS rules, which cover the brands scammers impersonate in the countries NoCall serves.
Open toolOn this page
Purpose
Type the sender as it appears on your phone (a name, a short number or a full number) to see what kind of sender it is, whether it names a known brand and where that brand’s links really go.
Requirements
Anyone can read these guides, no account needed. Some tools require Pro, as indicated in each guide.
Type the sender exactly as your phone shows it: a name, a short number or a full phone number. The check runs in your browser.
How to use it
Type the sender exactly as your phone shows it: a name, a short number or a full phone number. The check runs in your browser.
Check
Synthetic example
Invented example, not a real lookup. Do not call or open its links.
DEMOInterpret the result
A sender name that uses DEMO: Whoever sends a text message chooses the name it shows, and scammers use DEMO’s name too. NoCall’s data doesn’t record which sender names DEMO uses, so the name alone can’t tell you whether the message is real.
A sender name: The message was sent with a name instead of a number. Companies use names for automated messages, but whoever sends the message chooses the name, so it can be faked. It doesn’t match any brand in NoCall’s SMS rules.
A short number: Short numbers are used for automated messages, alerts and subscriptions, and some of these services are paid. Don’t reply with keywords or sign up to anything you don’t recognise.
An ordinary phone number: The message came from an ordinary number. If it says it’s from a company or an authority and asks you to tap a link, call or pay, be extra careful: companies usually send bulk messages under a name or a short number.
A number from another country (+44): The message came from a foreign number. If it claims to be from a company or an authority in your country, be extra careful, and never call it back.
Limitations
Scammers can make a text message show a brand’s name or someone else’s number (spoofing), and the fake can even land in the same conversation as the real messages. What gives a fake away is where its link goes.
The check runs in your browser: the sender you type is not sent or saved.
Troubleshooting
Type the sender as it appears: a name, a short number or a phone number.
Use with the API
Needs an API key and credits. Each completed call costs 1 credit, even when there is no data. An active Pro account includes 20 credits per UTC calendar month, shared by every API route and spent first; unused monthly credits do not roll over. Credits bought on your account page work without Pro and never expire.
Errors are never charged: 401 invalid_api_key (missing or invalid key), 403 pro_required (no Pro credits and no purchased credits), 422 invalid input, 429 quota_exceeded (no credits left), rate_limit_exceeded or ai_busy (the AI of sms-check is at capacity), 503 tool_warming (the data is still being prepared) or tool or provider unavailable. After a 429 or 503, retry once the seconds in the Retry-After header have passed.
Classifies an SMS sender: known brand name, other name (and lookalike), short code, national or international number.
Send the JSON body to the tool's own route, or to POST /v2/tools with the tool field added. Both routes return the same result.
POST https://api.nocall.io/v2/sms-sender
POST https://api.nocall.io/v2/tools {"tool":"sms-sender","sender":"Correos","country":"ES"}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| sender | string (1–40) | Yes | Sender name or number to classify. |
| country | string (enum, 55) | No (default: "ES") | Country whose SMS rule set is used. |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/sms-sender' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"sender":"Correos","country":"ES"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/sms-sender',
method='POST',
data=json.dumps({'sender': 'Correos', 'country': 'ES'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/sms-sender', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ sender: 'Correos', country: 'ES' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);Example response (200)
This is the documented example from the API reference. Lookups use a fictional number, and aggregates and AI answers show the shape of the result, not live data.
{
"data": {
"tool": "sms-sender",
"result": {
"kind": "brandName",
"tooLong": false,
"brand": {
"name": "Correos",
"keys": [
"correos"
],
"officialDomains": [
"correos.es",
"correos.com",
"correosexpress.com"
]
}
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}Result fields (data.result)
| Field | Type | Description |
|---|---|---|
| kind | "brandName" | "name" | "shortCode" | "nationalNumber" | "internationalNumber" | What kind of sender it is. |
| tooLong | boolean | Whether the name is longer than an alphanumeric SMS sender ID allows. |
| brand | object | null | The known brand with its official domains, or null. |
| lookalike | boolean | Whether the name imitates a known brand. |
| digits | string | Digits of the sender number. |
| code | string | International calling code of the sender. |
Frequently asked questions
Can a scammer send a text message with a bank’s name?
Yes. Whoever sends the message chooses the sender name, so it can be faked (spoofing). That’s why the link in the message matters more than the name.
Why did the fake appear in the same conversation as the real messages?
Phones group messages by sender name. If a scammer uses the same name, the fake lands in the same conversation, which makes it look more credible.
Is a message from an ordinary mobile number always a scam?
No, but a message that says it’s from a company or an authority and comes from an ordinary number deserves extra caution. Look the number up in NoCall and never use the link to check.
