Python SDK — whatsapp-data-sdk
واٹس ایپ ڈیٹا API کے لیے آفیشل ازگر کلائنٹ۔ ٹائپ شدہ جوابات، ایک انحصار (درخواستیں)، کیش فرسٹ تلاش، اور ایک صاف استثنائی درجہ بندی۔
انسٹال کریں۔
pip install whatsapp-data-sdk
Python 3.8-3.13 تعاون یافتہ۔ py.typed مارکر کے ساتھ بحری جہاز مکمل قسم کے چیکر سپورٹ (mypy، pyright) کے لیے۔
فوری آغاز
from whatsapp_data_sdk import WhatsAppDataClient
client = WhatsAppDataClient(api_key="YOUR_KEY") # sent as x-rapidapi-key
profile = client.get_profile("59898297150")
print(profile.get("exists"), profile.get("about"), profile.get("profilePic"))تصدیق اور نقل و حمل
آپ کی کلید ہمیشہ x-rapidapi-key میں بھیجی جاتی ہے۔ منتخب کریں کہ نقل و حمل کے ساتھ درخواستیں کہاں جاتی ہیں۔
| transport | لائیو میزبان | کیشے / صرف DB میزبان |
|---|---|---|
"proxy" (پہلے سے طے شدہ) | whatsapp-proxy.checkleaked.cc | /number_cache اسی میزبان پر |
"rapidapi" | wp-data.p.rapidapi.com | wp-data-db-only.p.rapidapi.com |
client = WhatsAppDataClient(api_key="RAPIDAPI_KEY", transport="rapidapi")
URLs/میزبان کو base_url، cache_base_url، rapidapi_host، rapidapi_cache_host کے ذریعے اوور رائیڈ کریں۔
کیش فرسٹ تلاش (پیسے کی بچت)
check_cached() سب سے پہلے سستے کیشے / صرف DB کے اختتامی نقطہ کو پڑھتا ہے اور صرف ایک حقیقی مس پر ادا شدہ لائیو چیک پر واپس آتا ہے۔
r1 = client.check_cached("59898297150") # cacheFirst (default)
print(r1["_source"]) # "cache" | "live"
r2 = client.check_cached("59898297150", mode="cacheOnly") # never a live call
r3 = client.check_cached("59898297150", mode="live") # always freshایک مستند کیشڈ ناٹ آن واٹس ایپ ریکارڈ ایک ہٹ کے طور پر شمار ہوتا ہے (فضول براہ راست دوبارہ چیک نہیں)؛ زندہ رہنے کے لیے صرف ایک حقیقی NOT_IN_DATABASE مس آتی ہے۔
API حوالہ
ہر طریقہ 1:1 کو مارکیٹ پلیس کے اختتامی نقطہ سے نقشہ بناتا ہے - وہی کوریج جو npm SDK، snake_case کے نام کی ہے۔
# Profile & pictures
client.get_profile(number, telegram=True, include_carrier=True) # Get Profile Information
client.get_profile_no_picture(number) # (No profile pic)
pic = client.get_last_picture(number) # JPEG bytes -> pic.content, pic.to_data_uri()
client.get_device_count(number) # Device count
client.get_osint_info(number) # OSINT Info
# Breaches
client.get_phone_breaches(number, limit=50) # built-in (no external key)
client.get_phone_breaches_external(number, api_key="...") # your checkleaked.cc key
# Search & database
client.search(country_code="UY", is_business=True, limit=20) # Search
client.search_google_maps(latitude=-34.9, longitude=-56.16, radius=2000) # Search in Google Maps
client.get_leaked_numbers_info() # Leaked Numbers (500M) -> Drive link (MEGA tier)
client.download_entire_database() # Download the Entire DB -> Drive link (MEGA tier)
# Bulk
client.bulk_check(numbers) # live (max 50)
client.bulk_check_db_basic(numbers) # DB basic (max 1000)
client.bulk_check_db_full(numbers) # DB full (max 1000)
# Telegram / carrier
client.get_telegram_profile("59898297150") # experimental
client.get_telegram_profile(["num1", "num2"])
client.carrier_lookup(number) # Carrier Lookup
client.carrier_lookup_alt(number, page=2) # Carrier Lookup Alternative"نہیں ملا" حل کرتا ہے - یہ نہیں بڑھتا ہے۔
واٹس ایپ پر نہ ہونے والا نمبر ایک عام نتیجہ ہے، لہذا یہ عزم (کبھی نہ بڑھائیں):
p = client.get_profile("14155552671")
if not p.get("exists"):
print("not on WhatsApp")کیا اضافہ ہوتا ہے: غلط نمبر (400)، تصنیف (401/403)، شرح کی حد (429)، ٹائم آؤٹ، نیٹ ورک، 5xx۔
فی درخواست کے اختیارات
ہر طریقہ ٹائم آؤٹ (سیکنڈ) کو قبول کرتا ہے اور دوبارہ کوشش کرتا ہے:
client.get_profile("59898297150", timeout=5, retries=0)غلطیاں
تمام ناکامیاں WhatsAppDataError کے ذیلی طبقے کو بڑھاتی ہیں۔
| کلاس | جب |
|---|---|
ValidationError | غلط دلائل (کسی بھی درخواست سے پہلے اٹھائے گئے؛ کوئی حیثیت نہیں)۔ |
AuthError | 401/403 — غائب/غلط/ان سبسکرائب شدہ کلید۔ |
RateLimitError | 429 — .retry_after_ms لے جاتا ہے جب سرور نے دوبارہ کوشش کے بعد بھیجا تھا۔ |
HttpError | کوئی دوسرا غیر 2xx (جیسے 400, 5xx)؛ حیثیت رکھتا ہے، جسم۔ |
TimeoutError | درخواست ٹائم آؤٹ سے تجاوز کر گئی۔ |
NetworkError | نقل و حمل کی ناکامی۔ |
WhatsAppDataError | بیس کلاس۔ |
from whatsapp_data_sdk import AuthError, RateLimitError, WhatsAppDataError
try:
client.get_profile("59898297150")
except AuthError:
... # 401/403
except RateLimitError as e:
print(e.retry_after_ms)
except WhatsAppDataError as e:
print(e.status, e.body)POSTs (bulk_check, bulk_check_db_*) خود بخود دوبارہ کوشش نہیں کی جاتی ہیں، تاکہ دوگنا خرچ کرنے والے کوٹے سے بچ سکیں۔
فون نمبر فارمیٹس
کوئی بھی فارمیٹ کام کرتا ہے — SDK معمول پر آتا ہے۔ مددگار برآمد کیے جاتے ہیں:
from whatsapp_data_sdk import to_digits, to_e164
to_digits("+598 98 297 150") # "59898297150" (path & live endpoints)
to_e164("59898297150") # "+59898297150" (bulk-DB endpoints require it)متعلقہ
ہمارے صارفین کیا کہتے ہیں
ہمارے مطمئن گاہکوں کی حقیقی جائزے