npm SDK — whatsapp-data-sdk

WhatsApp ڈیٹا API کے لیے آفیشل ٹائپ اسکرپٹ/جاوا اسکرپٹ کلائنٹ۔ ٹائپ شدہ طریقے، صفر رن ٹائم انحصار، کیش فرسٹ تلاش، اور ایک صاف غلطی کی درجہ بندی۔

زیرو انحصار
مکمل ٹائپ شدہ
ESM + CJS
npmGitHub

انسٹال کریں۔

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.comwp-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)

"نہیں ملا" حل کرتا ہے - یہ نہیں پھینکتا ہے۔

واٹس ایپ پر نہ ہونے والا نمبر ایک عام نتیجہ ہے، غلطی نہیں، لہذا یہ عزم (وہ کبھی رد نہیں کرتے):

getProfile / getProfileNoPicture / checkCached موجود: غلط (اور کوڈ: 'NUMBER_NOT_FOUND') کے ساتھ اندراج لوٹاتا ہے۔
صفر مماثلت کے ساتھ تلاش ایک خالی صفحہ لوٹاتا ہے (کامیابی: غلط، data.docs:[])۔
ایک غیر واٹس ایپ نمبر کے لیے getDeviceCount کامیابی لوٹاتا ہے: غلط (deviceCount غیر حاضر کے ساتھ)۔
const p = await client.getProfile('14155552671')
if (!p.exists) console.log('not on WhatsApp')

کیا پھینکتا ہے: ایک غلط نمبر (400)، تصدیق کی ناکامی (401/403)، شرح کی حد (429)، ٹائم آؤٹ، نیٹ ورک کی ناکامی، اور 5xx۔

غلطیاں

تمام مستردیاں WhatsAppDataError کی ذیلی کلاس ہیں، لہذا ایک ہی کیچ ہر چیز کو سنبھال لیتی ہے۔

کلاسجب
ValidationErrorخراب دلائل (کسی بھی درخواست سے پہلے، ہم وقت سازی سے پھینک دیا گیا؛ کوئی حیثیت نہیں)۔
AuthError401/403 — غائب، غلط، یا ان سبسکرائب شدہ کلید۔
RateLimitError429 — 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

متعلقہ

ہمارے صارفین کیا کہتے ہیں

ہمارے مطمئن گاہکوں کی حقیقی جائزے

4.5/5 (176 جائزے)