npm SDK — whatsapp-data-sdk
WhatsApp ڈیٹا API کے لیے آفیشل ٹائپ اسکرپٹ/جاوا اسکرپٹ کلائنٹ۔ ٹائپ شدہ طریقے، صفر رن ٹائم انحصار، کیش فرسٹ تلاش، اور ایک صاف غلطی کی درجہ بندی۔
انسٹال کریں۔
npm install whatsapp-data-sdk # or pnpm add whatsapp-data-sdk # or yarn add whatsapp-data-sdk
مقامی بازیافت کا استعمال کرتا ہے - نوڈ 18+، بن، ڈینو، اور براؤزرز میں کام کرتا ہے۔ کوئی محور، کوئی پولی فل کی ضرورت نہیں ہے۔
فوری آغاز
import { WhatsAppDataClient } from 'whatsapp-data-sdk'
const client = new WhatsAppDataClient({
apiKey: process.env.WA_API_KEY!, // sent as x-rapidapi-key
})
const profile = await client.getProfile('59898297150')
console.log(profile.exists, profile.about, profile.profilePic)تصدیق اور نقل و حمل
آپ کی API کلید ہمیشہ x-rapidapi-key ہیڈر میں بھیجی جاتی ہے۔ منتخب کریں کہ نقل و حمل کے ساتھ درخواستیں کہاں جاتی ہیں۔
| transport | لائیو میزبان | کیشے / صرف DB میزبان | نوٹس |
|---|---|---|---|
'proxy' (پہلے سے طے شدہ) | whatsapp-proxy.checkleaked.cc | /number_cache اسی میزبان پر | سادہ — ایک بنیادی URL، کوئی میزبان ہیڈر نہیں۔ |
'rapidapi' | wp-data.p.rapidapi.com | wp-data-db-only.p.rapidapi.com | خود بخود x-rapidapi-host سیٹ کرتا ہے۔ اپنی RapidAPI کلید استعمال کریں۔ |
// RapidAPI marketplace (live + DB-only hosts)
const client = new WhatsAppDataClient({
apiKey: process.env.RAPIDAPI_KEY!,
transport: 'rapidapi',
})آپ baseUrl، cacheBaseUrl، rapidApiHost، rapidApiCacheHost کے ذریعے کسی بھی URL/میزبان کو اوور رائیڈ کر سکتے ہیں۔
کیش فرسٹ تلاش (پیسے کی بچت)
checkCached() پہلے سستے کیشے / DB-only endpoint کو پڑھتا ہے اور صرف اس وقت ادا شدہ لائیو چیک پر واپس آتا ہے جب نمبر ابھی تک کیش نہیں ہوتا ہے۔
// cacheFirst (default): DB first → live only on a miss
const r1 = await client.checkCached('59898297150')
console.log(r1._source) // 'cache' | 'live'
// cacheOnly: never spend on a live check
const r2 = await client.checkCached('59898297150', { mode: 'cacheOnly' })
// live: always fresh
const r3 = await client.checkCached('59898297150', { mode: 'live' })ریپیڈیپی ٹرانسپورٹ پر اس روٹس پر کیشے wp-data-db-only.p.rapidapi.com پر پڑھا جاتا ہے اور wp-data.p.rapidapi.com پر لائیو فال بیک — دو میزبان رقم کی بچت کا بہاؤ۔
API حوالہ
ہر طریقہ 1:1 کو مارکیٹ پلیس اینڈ پوائنٹ پر نقش کرتا ہے۔
پروفائل اور تصاویر
await client.getProfile(number, options?) // Get Profile Information await client.getProfileNoPicture(number, options?) // Get Profile Information (No profile pic) await client.getLastPicture(number) // Get Last Saved Picture (JPEG bytes) await client.getDeviceCount(number) // Device count await client.getOsintInfo(number) // OSINT Info
getProfile کے اختیارات میں telegram, google, lookup, includeCarrier, base64, geminiFaceAnalysis, reverseImageSearch, fullAiReport, IncludeDeviceCount, onlyCheck, useCache, forceBypassCache اور مزید شامل ہیں۔
const pic = await client.getLastPicture('59898297150')
// pic.bytes: Uint8Array, pic.contentType: string
htmlImg.src = pic.toDataUri()فون کی خلاف ورزیاں
await client.getPhoneBreaches(number, { limit, offset }) // Get Phone Breaches (no external key)
await client.getPhoneBreachesExternal(number, apiKey) // Get Phone Breaches (your checkleaked.cc key)تلاش اور ڈیٹا بیس
await client.search({ countryCode: 'UY', isBusiness: true, limit: 20 }) // Search
await client.searchGoogleMaps({ latitude: -34.9, longitude: -56.16, radius: 2000 }) // Search in Google Maps
// Bulk downloads return a Google Drive link to the full dataset (MEGA tier only)
const leaks = await client.getLeakedNumbersInfo() // Leaked Numbers (500M database)
console.log(leaks.driveFolder.url)
const backup = await client.downloadEntireDatabase() // Download the Entire DB
console.log(backup.driveFolder.url)بلک چیک
await client.bulkCheck(numbers, { includeBusiness, noBanStatus }) // Bulk Check (live, max 50)
await client.bulkCheckDbBasic(numbers) // Basic Check (DB, max 1000)
await client.bulkCheckDbFull(numbers) // Full Check (DB, max 1000)ٹیلیگرام اور کیریئر
// Telegram (experimental)
await client.getTelegramProfile('59898297150') // single
await client.getTelegramProfile(['num1', 'num2']) // batch
// Carrier
await client.carrierLookup(number) // Carrier Lookup
await client.carrierLookupAlt(number) // Carrier Lookup Alternative (spam-report signals)
await client.carrierLookupAlt(number, { page: 2 }) // page through the reports (response has a `pagination` block)"نہیں ملا" حل کرتا ہے - یہ نہیں پھینکتا ہے۔
واٹس ایپ پر نہ ہونے والا نمبر ایک عام نتیجہ ہے، غلطی نہیں، لہذا یہ عزم (وہ کبھی رد نہیں کرتے):
const p = await client.getProfile('14155552671')
if (!p.exists) console.log('not on WhatsApp')کیا پھینکتا ہے: ایک غلط نمبر (400)، تصدیق کی ناکامی (401/403)، شرح کی حد (429)، ٹائم آؤٹ، نیٹ ورک کی ناکامی، اور 5xx۔
غلطیاں
تمام مستردیاں WhatsAppDataError کی ذیلی کلاس ہیں، لہذا ایک ہی کیچ ہر چیز کو سنبھال لیتی ہے۔
| کلاس | جب |
|---|---|
ValidationError | خراب دلائل (کسی بھی درخواست سے پہلے، ہم وقت سازی سے پھینک دیا گیا؛ کوئی حیثیت نہیں)۔ |
AuthError | 401/403 — غائب، غلط، یا ان سبسکرائب شدہ کلید۔ |
RateLimitError | 429 — retryAfterMs لے جاتا ہے جب سرور نے Retry-After بھیجا تھا۔ |
HttpError | کوئی دوسرا غیر 2xx (جیسے 400, 5xx)؛ .status اور .body رکھتا ہے. |
TimeoutError | درخواست ٹائم آؤٹ ایمز سے تجاوز کر گئی۔ |
NetworkError | نقل و حمل کی ناکامی (DNS، کنکشن ری سیٹ، وسط باڈی اسقاط)۔ |
WhatsAppDataError | مندرجہ بالا سب کے لیے بیس کلاس۔ |
import { AuthError, RateLimitError, TimeoutError, WhatsAppDataError } from 'whatsapp-data-sdk'
try {
await client.getProfile('59898297150')
} catch (err) {
if (err instanceof AuthError) {/* 401/403 — bad/unsubscribed key */}
else if (err instanceof RateLimitError) {/* 429 — err.retryAfterMs */}
else if (err instanceof TimeoutError) {/* request timed out */}
else if (err instanceof WhatsAppDataError) {
console.error(err.status, err.body)
}
}کنفیگریشن
new WhatsAppDataClient({
apiKey: '...', // required
transport: 'proxy', // 'proxy' | 'rapidapi'
timeoutMs: 60000, // request timeout (bounds headers AND body read)
retries: 2, // retry 5xx / 429 / network / timeout (GET only) with backoff
retryDelayMs: 500, // exponential base; 429 honors Retry-After when longer
baseUrl: '...', // override live base URL
cacheBaseUrl: '...', // override cache/DB-only base URL
rapidApiHost: '...', // override live x-rapidapi-host
rapidApiCacheHost: '...',// override cache x-rapidapi-host
userAgent: '...', // custom User-Agent
fetch: globalThis.fetch, // inject a custom fetch (tests / polyfills)
})فون نمبر فارمیٹس
نمبرز کو کسی بھی فارمیٹ میں پاس کریں — SDK انہیں معمول پر لاتا ہے، اور مددگاروں کو برآمد کرتا ہے تاکہ آپ اسی نارملائزیشن کو دوبارہ استعمال کر سکیں:
import { toDigits, toE164 } from 'whatsapp-data-sdk'
toDigits('+598 98 297 150') // '59898297150' (path & live endpoints)
toE164('59898297150') // '+59898297150' (bulk-DB endpoints; their validator requires it)
// both throw ValidationError on input with no digitsفی درخواست کے اختیارات
ہر طریقہ ایک ٹریلنگ آپشن آبجیکٹ لیتا ہے جو سگنل، ٹائم آؤٹ ایمز، اور دوبارہ کوششیں بھی قبول کرتا ہے — فی کال کینسلیشن اور ٹیوننگ کے لیے:
const controller = new AbortController()
const p = client.getProfile('59898297150', {
telegram: true,
signal: controller.signal, // cancel this specific request
timeoutMs: 5000, // override the client timeout for this call
})
controller.abort() // rejects with WhatsAppDataErrorمتعلقہ
ہمارے صارفین کیا کہتے ہیں
ہمارے مطمئن گاہکوں کی حقیقی جائزے