Google Maps scraper API وخادم MCP

تشغّل Google Maps scraper API بحثاً محدوداً عن الأنشطة من تطبيقك أو من وكيل. مفتاح مساحة عمل بنطاق محدود، وميزانية مهمة صريحة، ومفتاح تطابق ثابت تغطي كل إعادة محاولة. النتائج JSON، والحقل الغائب يبقى فارغاً.

قبل البدء · يتطلب البحث المباشر إعداد مصدر بيانات. تُميّز بيانات الأمثلة بوضوح. الخطط المدفوعة غير متاحة بعد.

إنشاء مهمة محدودة

اربط Google Maps scraper API بواجهة REST أو بعميل HTTP MCP عبر مفتاح محدود الصلاحيات. قدّر المهام وحدد ميزانيات صريحة واسترجع نتائج منظمة.

curl -X POST https://mapsscraper.dev/api/v1/jobs \
  -H "Authorization: Bearer $MAPSSCRAPER_API_KEY" \
  -H "Idempotency-Key: dentists-austin-tx-001" \
  -H "X-Max-Units: 1" \
  -H "Content-Type: application/json" \
  -d '{"kind":"search","query":"Dentists in Austin, TX","limit":20,"region":"us"}'

HTTP/1.1 202 Accepted
{"id":"6f1c2b3a-0000-4000-8000-000000000000","status":"queued","reserved":1}

أعد محاولة العملية نفسها باستخدام مفتاح عدم التكرار نفسه. يعيد الطلب المعدّل بهذا المفتاح الرمز 409. تمر المهام بالحالات: في قائمة الانتظار، قيد التشغيل، مكتملة، جزئية، فاشلة، ملغاة أو غير مؤكدة. يتطلب الطلب غير المؤكد إلى مصدر البيانات إجراء تسوية بدلًا من إعادة تشغيل مدفوعة تلقائيًا.

ما هي واجهة Google Maps scraper API؟

تقبل واجهة Google Maps scraper API فئة ومنطقة، وتعيد القوائم العامة بصيغة JSON، وتعرض الحد الأقصى لميزانية المهمة قبل تنفيذ الطلب. يستخدم كل طلب مفتاحًا محدد النطاق ومفتاح عدم التكرار. المراجعات طلب منفصل.

اقرأ النتائج

تحتفظ المهام المكتملة والجزئية بنتائجها طوال فترة الاحتفاظ في مساحة عملك. اقرأها صفحةً تلو الأخرى باستخدام offset و limit؛ قراءة النتائج المخزنة لا تُشغّل أي بحث جديد أبدًا.

نموذج استجابة مختصر. القيم توضيحية وليست بيانات حقيقية لأنشطة تجارية.

{
  "items": [
    {
      "business_id": "sample-business-id",
      "name": "Sample Dental Studio",
      "full_address": "100 Example Ave, Austin, TX 78701",
      "phone_number": "+1 512-555-0100",
      "website": "https://dental.example",
      "type": "Dentist",
      "rating": 4.8,
      "review_count": 214,
      "latitude": 30.2672,
      "longitude": -97.7431,
      "_source": {
        "provider": "live_maps",
        "fetched_at": "2026-11-01T12:00:00Z",
        "website_status": "provided_unverified"
      }
    }
  ],
  "count": 1,
  "offset": 0,
  "next_offset": null,
  "provider": "live_maps",
  "coverage": "bounded_sample",
  "fetched_at": "2026-11-01T12:00:00Z"
}

واجهة API لمراجعات Google Maps

اطلب المراجعات لمعرّف نشاط تجاري واحد في كل مهمة، بحد أقصى 100 مراجعة في الصفحة، مرتبة حسب الصلة أو الأحدث أو الأعلى تقييمًا أو الأدنى تقييمًا. تتضمن كل مراجعة نصها وتقييمها وتاريخها وكاتبها وأي رد من المالك عند توفره. تحتاج كل صفحة إضافية إلى مهمة وميزانية خاصة بها.

استخراج المراجعات
POST /api/v1/jobs
Idempotency-Key: reviews-sample-business-001
X-Max-Units: 1

{"kind":"reviews","business_id":"sample-business-id","limit":50,"review_options":{"sort_by":"newest"}}

مثال Python

باستخدام Google Maps scraper API احصل على تقدير للبحث، وأنشئ المهمة، وانتظر الحالة النهائية، ثم اقرأ النتائج بمكتبة requests.

import os
import time
import uuid

import requests

API = "https://mapsscraper.dev/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['MAPSSCRAPER_API_KEY']}"}
task = {"kind": "search", "query": "Dentists in Austin, TX", "limit": 20, "region": "us"}

# An estimate reserves nothing.
units = requests.post(f"{API}/estimate", json=task, headers=HEADERS, timeout=30).json()["units"]

# Keep the key: a retry of the same task must send it again.
key = str(uuid.uuid4())
job = requests.post(
    f"{API}/jobs",
    json=task,
    headers={**HEADERS, "Idempotency-Key": key, "X-Max-Units": str(units)},
    timeout=30,
)
job.raise_for_status()
job_id = job.json()["id"]

while True:
    status = requests.get(f"{API}/jobs/{job_id}", headers=HEADERS, timeout=30).json()["status"]
    if status not in ("queued", "running"):
        break
    time.sleep(5)

if status in ("completed", "partial"):
    page = requests.get(
        f"{API}/jobs/{job_id}/results",
        params={"offset": 0, "limit": 100},
        headers=HEADERS,
        timeout=30,
    ).json()
    for business in page["items"]:  # follow page["next_offset"] for more
        print(business.get("name"), business.get("phone_number"), business.get("website"))

أسئلة حول API

الوثائق
هل هذه هي Google Places API؟

لا. MapsScraper.dev خدمة مستقلة وغير تابعة لـ Google. تأتي النتائج من مصدر بيانات أعمال تابع لجهة خارجية وتستخدم تنسيق JSON الخاص بنا.

كيف تُحتسب تكلفة طلبات Google Maps scraper API؟

تستخدم معظم المهام وحدة واحدة. يحجز إثراء جهات الاتصال في البحث أو لقطة الترتيب وحدة إضافية لكل سجل مطلوب، ولا يحتسب إلا السجلات المسلّمة. تستخدم تفاصيل النشاط التجاري وحدة واحدة، أو وحدتين مع جهات الاتصال؛ ويستخدم الإثراء وحدتين. اضبط X-Max-Units على قيمة لا تقل عن التقدير.

هل البريد الإلكتروني وأرقام الهاتف مضمونة؟

لا. تعتمد التغطية على المصدر والشركة. قد يقدم الإثراء الاختياري جهات اتصال عامة. تحقق من البيانات الناقصة أو القديمة قبل استخدامها.

الموارد

تبدأ قائمتك القادمة بمكان.

جرّب المسار بسجلات أمثلة محددة، ثم اربط مساحة عملك للبحث المباشر.

استكشف مثالاً