REST API v1.0

توثيق Open Data API

وصول مجاني ومفتوح إلى بيانات السياحة العربية — للباحثين والمطورين والمؤسسات

البدء السريع

يمكنك البدء في استخدام Open Data API في 3 خطوات فقط:

1️⃣
احصل على مفتاح

سجّل في صفحة التسجيل للحصول على API Key مجاني.

2️⃣
أرسل طلبك

أضف المفتاح إلى URL باستخدام ?key=.

3️⃣
استلم JSON

ستستلم البيانات بصيغة JSON منسقة وجاهزة للاستخدام.

مثال عملي:
curl "https://your-domain.com/api/open/?endpoint=stats&key=YOUR_API_KEY"
النتيجة:
{
  "success": true,
  "endpoint": "stats",
  "source": "المرصد السياحي العربي — Arab Tourism Observatory",
  "generated_at": "2024-11-15T14:30:00+00:00",
  "count": null,
  "data": {
    "countries": 22,
    "indicators": 10,
    "values": 48,
    "gis_features": 10,
    "events": 5,
    "last_update": "2024-11-15 10:00:00"
  }
}

المصادقة

يجب إرسال API Key مع كل طلب. يمكنك إرساله بطريقتين:

🔹 الطريقة 1: معامل URL (الأبسط)
GET /api/open/?endpoint=countries&key=ato_xxxxxxxxxxxxx
🔹 الطريقة 2: HTTP Header (الأكثر أمانًا)
GET /api/open/?endpoint=countries
X-API-Key: ato_xxxxxxxxxxxxx
لا تشارك مفتاحك علنًا — لا تضعه في كود JavaScript للمتصفح، ولا في مستودعات Git العامة.

حدود الاستخدام

الفئة الحد اليومي كيفية الحصول عليها
مجاني (Free) 1000 طلب / يوميًا تلقائي عند التسجيل
باحث (Researcher) 10000 طلب / يوميًا اطلب الترقية عبر البريد
مؤسسي (Institutional) 100000 طلب / يوميًا اتصل بنا للاتفاق
عند تجاوز الحد، ستحصل على 429 Too Many Requests. تتم إعادة تعيين العداد يوميًا منتصف الليل UTC.

الرابط الأساسي

https://your-domain.com/api/open/

جميع نقاط النهاية تستخدم هذا الرابط الأساسي مع معامل endpoint:

GET https://your-domain.com/api/open/?endpoint=NAME&key=YOUR_KEY

الدول العربية

GET
?endpoint=countries&key=YOUR_KEY

يعرض قائمة بـ 22 دولة عربية مع المعلومات الأساسية.

المعاملات:
المعاملالنوعالوصف
region string اختياري تصفية حسب المنطقة:
GCC, NorthAfrica, Levant, NileValley, RedSea
مثال:
GET /api/open/?endpoint=countries®ion=GCC&key=YOUR_KEY
النتيجة:
{
  "success": true,
  "endpoint": "countries",
  "count": 6,
  "data": [
    {
      "country_id": 2,
      "iso_code": "AE",
      "name_ar": "الإمارات",
      "name_en": "United Arab Emirates",
      "region": "GCC",
      "capital": "أبوظبي",
      "population": null,
      "currency": null
    }
  ]
}

المؤشرات السياحية

GET
?endpoint=indicators&key=YOUR_KEY

يعرض قاموس المؤشرات السياحية الموحّد (10 مؤشرات أساسية).

مثال:
GET /api/open/?endpoint=indicators&key=YOUR_KEY

القيم الزمنية

GET
?endpoint=values&key=YOUR_KEY

القيم الفعلية للمؤشرات على مر السنين — أهم endpoint للباحثين.

المعاملات:
المعاملالنوعالوصف
indicator string اختياري رمز المؤشر (مثل: INBOUND_TOURISTS)
country_id int اختياري معرف الدولة
year_from int اختياري من سنة (افتراضي: 2015)
year_to int اختياري إلى سنة (افتراضي: السنة الحالية)
limit int اختياري الحد الأقصى (افتراضي: 1000، أقصى: 10000)
مثال — عدد السائحين في السعودية:
GET /api/open/?endpoint=values&indicator=INBOUND_TOURISTS&country_id=1&key=YOUR_KEY
النتيجة:
{
  "success": true,
  "endpoint": "values",
  "count": 3,
  "data": [
    {
      "country_name": "السعودية",
      "iso_code": "SA",
      "indicator_code": "INBOUND_TOURISTS",
      "indicator_name": "عدد السائحين الوافدين",
      "unit": "مليون",
      "period_year": 2024,
      "value": "26.5000",
      "confidence_level": "official"
    }
  ]
}

المواقع الجغرافية

GET
?endpoint=gis&key=YOUR_KEY

جميع المواقع السياحية مع إحداثياتها (تراث، فنادق، متاحف، مطارات...).

المعاملات:
المعاملالنوعالوصف
country_id int اختياري تصفية حسب الدولة
type string اختياري نوع الموقع

الأنواع المتاحة: heritage, attraction, hotel, museum, airport, port, event, route

الفعاليات

GET
?endpoint=events&key=YOUR_KEY

المهرجانات والمعارض والمؤتمرات في الوطن العربي.

المقارنة

GET
?endpoint=compare&key=YOUR_KEY

مقارنة عدة دول على مؤشر واحد في سنة محددة.

المعاملات:
المعاملالنوعالوصف
indicator string مطلوب رمز المؤشر
countries string مطلوب معرفات الدول مفصولة بفواصل (مثال: 1,7,9)
year int اختياري السنة
مثال — مقارنة السعودية ومصر والمغرب:
GET /api/open/?endpoint=compare&indicator=INBOUND_TOURISTS&countries=1,7,9&year=2024&key=YOUR_KEY

المؤشر المركب

GET
?endpoint=composite_index&year=2024&key=YOUR_KEY

ترتيب الدول العربية على مؤشر السياحة العربي (مؤشر مركب من 6 مؤشرات فرعية).

الإحصائيات العامة

GET
?endpoint=stats&key=YOUR_KEY

ملخص عام عن كمية البيانات المتاحة.

رموز الأخطاء

الرمزالمعنىالحل
200 نجاح ✅ —
400 طلب غير صحيح راجع المعاملات
401 API Key مفقودة أو غير صالحة تحقق من المفتاح
403 API Key منتهية أو معطّلة اطلب مفتاحًا جديدًا
404 Endpoint غير موجود راجع قائمة الـ endpoints
429 تجاوز الحد اليومي انتظر إعادة التصفير
500 خطأ في الخادم أبلغ الدعم
مثال على رد خطأ:
{
  "success": false,
  "error": "API key مطلوبة",
  "hint": "احصل على مفتاح من: /api/open/register.php",
  "docs": "/api/open/docs.php"
}

أمثلة بلغات مختلفة

JavaScript (Fetch):
const API_KEY = 'YOUR_API_KEY';
const BASE = 'https://your-domain.com/api/open/';

fetch(`${BASE}?endpoint=countries&key=${API_KEY}`)
  .then(res => res.json())
  .then(data => {
    if (data.success) {
      console.log(`عدد الدول: ${data.count}`);
      data.data.forEach(c => console.log(c.name_ar));
    }
  });
Python (Requests):
import requests

API_KEY = 'YOUR_API_KEY'
BASE = 'https://your-domain.com/api/open/'

response = requests.get(
    BASE,
    params={
        'endpoint': 'values',
        'indicator': 'INBOUND_TOURISTS',
        'country_id': 1,
        'key': API_KEY
    }
)

data = response.json()
if data['success']:
    for record in data['data']:
        print(f"{record['country_name']} {record['period_year']}: {record['value']}")
PHP:
<?php
$api_key = 'YOUR_API_KEY';
$url = 'https://your-domain.com/api/open/?endpoint=stats&key=' . $api_key;

$response = file_get_contents($url);
$data = json_decode($response, true);

if ($data['success']) {
    echo "عدد الدول: " . $data['data']['countries'];
}
?>
cURL:
curl -X GET "https://your-domain.com/api/open/?endpoint=countries&key=YOUR_API_KEY" \
  -H "Accept: application/json"

🚀 جاهز للبدء؟

احصل على API Key مجاني في أقل من دقيقة وابدأ باستخدام البيانات

احصل على API Key مجاني