✈️

Telegram Number Validation & Profile Lookup APIs

Query a Telegram user's public profile by phone number, username, or user ID.

Two-step flow: first call Check Exists to obtain a userHash, then pass that userHash to Get About / Get Picture. These lookup endpoints do not require you to create a messaging session.

RESTful JSON API for lead validation, CRM enrichment, and customer intelligence.

Overview

💡

Base URL https://api.opendata-api.com

Every call needs an API key. Paste it once below — it's attached to each request automatically.

GET /api/project/telegram/check-exists

Check Telegram Peer Exists

Full docs →
Details

Resolve a peer and return whether it exists on Telegram. Cheapest query; use it to pre-validate numbers/usernames before the about/picture queries. When exists=true, the response also includes the numeric Telegram user id, username (when the peer has one), display name, and a userHash that must be passed to Get About / Get Picture to authorize the heavier lookup. The userHash is valid for 24 hours. When the peer cannot be resolved, exists=false and reason carries an error code (e.g. PHONE_NOT_OCCUPIED, USERNAME_NOT_OCCUPIED). The peer accepts three forms: +phone (digits with a leading +, e.g. +8613800138000), @username or a bare username, and user:<id> for a numeric user ID.

ParameterInValue
path
curl -X GET 'https://api.opendata-api.com/api/project/telegram/check-exists?key=<API_KEY>&peer=<peer>'
GET /api/project/telegram/get-about

Get About / Bio Text

Full docs →
Details

Retrieve a Telegram user's public bio (About) text, plus the numeric user id and username. Two-step flow: first call Check Telegram Peer Exists to obtain a userHash for the target peer, then pass that userHash here. Calls without a valid (or expired/unknown) userHash are rejected. The peer is resolved from the userHash server-side — no peer parameter is accepted. If the peer does not exist, exists=false and reason explains why. An empty about means the user has no bio or hides it. If the peer exists but is a group/channel rather than a user, the response carries a bad-request business code.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/telegram/get-about?key=<API_KEY>&userHash=<userHash>'
GET /api/project/telegram/get-picture

Get Profile Photo (Avatar)

Full docs →
Details

Fetch a Telegram user's profile photo. Two-step flow: first call Check Telegram Peer Exists to obtain a userHash for the target peer, then pass that userHash here. Calls without a valid (or expired/unknown) userHash are rejected. The peer is resolved from the userHash server-side — no peer parameter is accepted. Telegram photos have no public URL, so the photo is returned base64-encoded with its MIME type (image/jpeg) — decode the data field to get the image bytes. pictureSet=false means the user has no photo or hides it by privacy settings. If the peer does not exist, exists=false and reason explains why.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/telegram/get-picture?key=<API_KEY>&userHash=<userHash>'

Guides