Python SDK — whatsapp-data-sdk

واٹس ایپ ڈیٹا API کے لیے آفیشل ازگر کلائنٹ۔ ٹائپ شدہ جوابات، ایک انحصار (درخواستیں)، کیش فرسٹ تلاش، اور ایک صاف استثنائی درجہ بندی۔

1 انحصار
ٹائپ شدہ (py.typed)
npm SDK پورٹ
PyPIGitHub

انسٹال کریں۔

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

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

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

get_profile / get_profile_no_picture / check_cached موجود = False (اور کوڈ=NUMBER_NOT_FOUND) کے ساتھ ڈیکٹ لوٹاتا ہے۔
صفر مماثلت کے ساتھ تلاش ایک خالی صفحہ لوٹاتا ہے (کامیابی = غلط، ڈیٹا['دستاویزات'] == [])۔
ایک غیر واٹس ایپ نمبر کے لیے get_device_count کامیابی = غلط لوٹاتا ہے۔
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غلط دلائل (کسی بھی درخواست سے پہلے اٹھائے گئے؛ کوئی حیثیت نہیں)۔
AuthError401/403 — غائب/غلط/ان سبسکرائب شدہ کلید۔
RateLimitError429 — .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)

متعلقہ

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

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

4.5/5 (176 جائزے)