API לחיפוש מקומות

חפשו מקומות לפי שם או קואורדינטות, עם התאמת קידומת מהירה ומסננים גיאוגרפיים.

מה אתם יכולים לעשות?
השלמה אוטומטית מיידית

קבלו תוצאות במהירות עם חיפוש קידומת סובלני לשגיאות הקלדה.

גידור גיאוגרפי מדויק

חפשו לפי עיר, תיבה תוחמת או רדיוס.

מטא-נתוני מקום עשירים

מחזיר מזהי OSM, אוכלוסייה, שם תצוגה ועוד.

נסו בזמן אמת
99.9 % זמן פעילות
93.7ms תגובה
20 req/s
0.009 קרדיטים / בקשה

Find Place by Name


POST https://api.yeb.to/v1/place/find-by-name
Parameter Type Required Description
api_key string yes Your API key
q string yes Search text (city, village, etc)
country_code string opt 2-letter ISO country filter
limit int opt Max results (1-100, default 20)
offset int opt Pagination offset

Example

curl -X POST https://api.yeb.to/v1/place/find-by-name \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_KEY",
    "q": "sofia",
    "country_code": "BG",
    "limit": 5
}'

Integrations

curl -X POST https://api.yeb.to/v1/place/find-by-name \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","q":"sofia","country_code":"BG","limit":5}'
$r = Http::post('https://api.yeb.to/v1/place/find-by-name', [
    'api_key' => 'YOUR_KEY', 'q' => 'sofia', 'country_code' => 'BG', 'limit' => 5
]);
echo $r->json();
fetch('https://api.yeb.to/v1/place/find-by-name', {
  method:'POST',
  headers:{'Content-Type':'application/json'},
  body:JSON.stringify({api_key:'YOUR_KEY',q:'sofia',country_code:'BG',limit:5})
}).then(r=>r.json()).then(console.log);
import requests, json
payload = {"api_key":"YOUR_KEY","q":"sofia","country_code":"BG","limit":5}
r = requests.post('https://api.yeb.to/v1/place/find-by-name', headers={'Content-Type':'application/json'}, data=json.dumps(payload))
print(r.json())

Response Example

{
  "query": "sofia",
  "count": 1,
  "places": [
    {
      "id": 727011,
      "name": "Sofia",
      "country_code": "BG",
      "osm_id": 240109189,
      "osm_type": "relation",
      "type": "city",
      "population": 1286383,
      "lat": 42.6977,
      "lng": 23.3219,
      "bbox": {
        "min_lat": 42.582,
        "max_lat": 42.815,
        "min_lng": 23.042,
        "max_lng": 23.461
      },
      "address": {
        "city": "Sofia",
        "state": "Sofia City Province",
        "country": "Bulgaria"
      },
      "display_name": "Sofia, Bulgaria"
    }
  ]
}
{
  "error": "Missing place name (q)",
  "code": 400
}

קודי תגובה

קודתיאור
200 Successהבקשה עובדה בהצלחה.
400 Bad Requestאימות קלט נכשל.
401 Unauthorizedמפתח API חסר או שגוי.
403 Forbiddenמפתח לא פעיל או לא מורשה.
429 Rate Limitיותר מדי בקשות.
500 Server Errorכשל בלתי צפוי.

Find by Name

place/find-by-name 0.0090 credits

Parameters

API Key
query · string · required
Query
query · string · required
Country code
query · string
Limit
query · integer
Offset
query · integer

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Find Place by Coordinates


POST https://api.yeb.to/v1/place/find-by-coord
Parameter Type Required Description
api_key string yes Your API key
lat float yes Latitude of centre point
lng float yes Longitude of centre point
radius float opt Radius in kilometers (default: 10)
limit int opt Max results (1-100, default 10)
offset int opt Pagination offset

Example

curl -X POST https://api.yeb.to/v1/place/find-by-coord \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_KEY",
    "lat": 42.6977,
    "lng": 23.3219,
    "radius": 25,
    "limit": 3
}'

Integrations

curl -X POST https://api.yeb.to/v1/place/find-by-coord \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","lat":42.6977,"lng":23.3219,"radius":25,"limit":3}'
$r = Http::post('https://api.yeb.to/v1/place/find-by-coord', [
    'api_key' => 'YOUR_KEY', 'lat' => 42.6977, 'lng' => 23.3219, 'radius' => 25, 'limit' => 3
]);
echo $r->json();
fetch('https://api.yeb.to/v1/place/find-by-coord', {
  method:'POST',
  headers:{'Content-Type':'application/json'},
  body:JSON.stringify({api_key:'YOUR_KEY',lat:42.6977,lng:23.3219,radius:25,limit:3})
}).then(r=>r.json()).then(console.log);
import requests, json
payload = {"api_key":"YOUR_KEY","lat":42.6977,"lng":23.3219,"radius":25,"limit":3}
r = requests.post('https://api.yeb.to/v1/place/find-by-coord', headers={'Content-Type':'application/json'}, data=json.dumps(payload))
print(r.json())

Response Example

{
  "lat": 42.6977,
  "lng": 23.3219,
  "radius_km": 25,
  "count": 3,
  "places": [
    {
      "id": 729530,
      "name": "Bankya",
      "country_code": "BG",
      "osm_id": 168422,
      "osm_type": "relation",
      "type": "town",
      "population": 10833,
      "lat": 42.706,
      "lng": 23.152,
      "dist_km": 12.3,
      "display_name": "Bankya, Sofia City Province, Bulgaria"
    }
  ]
}
{
  "error": "Missing lat/lng",
  "code": 400
}

קודי תגובה

קודתיאור
200 Successהבקשה עובדה בהצלחה.
400 Bad Requestאימות קלט נכשל.
401 Unauthorizedמפתח API חסר או שגוי.
403 Forbiddenמפתח לא פעיל או לא מורשה.
429 Rate Limitיותר מדי בקשות.
500 Server Errorכשל בלתי צפוי.

Find by Coordinates

place/find-by-coord 0.0090 credits

Parameters

API Key
query · string · required
Latitude
query · number · required
Longitude
query · number · required
Radius (km)
query · number
Limit
query · integer
Offset
query · integer

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

API לחיפוש מקומות — Practical Guide

A hands-on guide to searching places by name or coordinates using API לחיפוש מקומות: what each endpoint does, when to use it, which parameters actually matter, and how to interpret responses to power autosuggest, “near me”, and map fit features.

#What Place API solves

The Place API helps you turn free-form text or a map location into clean, structured place data: name, type (city/town/village), coordinates, optional population, and identifiers you can cache. It’s ideal for search boxes, checkouts, “near me” lists, and map zoom-to-fit.

#Endpoints & when to use them

#POST /v1/place/find-by-coord — Nearby places by point

  • Best for: “Near me” lists, centering a map, geo-fencing UIs.
  • How it works: You send lat/lng (and optionally radius); the API returns places within the radius sorted by distance, including dist_km.
  • Typical output: id, name, type, country_code, lat, lng, dist_km, and a human display_name.

#POST /v1/place/find-by-name — Text search

  • Best for: Search/autocomplete fields, onboarding flows.
  • How it works: You send q (and optionally country_code); the API returns matching places with optional bbox to instantly fit the map view.
  • Typical output: id, name, type, country_code, population, lat, lng, bbox, address.

#Quick start

# Nearby by point
curl -X POST "https://api.yeb.to/v1/place/find-by-coord" \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_KEY", "lat": 42.6977, "lng": 23.3219, "radius": 25, "limit": 3 }'
# Text search
curl -X POST "https://api.yeb.to/v1/place/find-by-name" \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_KEY", "q": "sofia", "country_code": "BG", "limit": 5 }'

#Parameters that actually matter

Common

ParamRequiredPractical guidance
api_key Yes Send from server/edge. Don’t embed a raw key in the browser.

/find-by-coord

ParamRequiredWhat to pass in practice
lat, lng Yes Make sure they’re WGS84 doubles (no strings). If taken from GPS, round to ~5 decimals for privacy.
radius No Kilometers. Start with 10; for rural searches 25–50; for dense cities 3–8.
limit, offset No Use for pagination/infinite scroll. Keep limit ≤ 50 for snappy UX.

/find-by-name

ParamRequiredWhat to pass in practice
q Yes Free-form user text. Send as-typed; we handle diacritics and casing.
country_code No ISO-3166-1 alpha-2 (e.g., US, BG). Great for disambiguating short names.
limit, offset No Autosuggest: limit=5..10. Backoffice search: limit=20..50.

#Reading & acting on responses

Nearby by coordinates — example

{
  "lat": 42.6977,
  "lng": 23.3219,
  "radius_km": 25,
  "count": 3,
  "places": [
    {
      "id": 729530,
      "name": "Bankya",
      "country_code": "BG",
      "osm_id": 168422,
      "osm_type": "relation",
      "type": "town",
      "population": 10833,
      "lat": 42.706,
      "lng": 23.152,
      "dist_km": 12.3,
      "display_name": "Bankya, Sofia City Province, Bulgaria"
    }
  ]
}
  • dist_km — great for sorting “nearest first” and drawing proximity badges.
  • type — city/town/village; helpful for UI microcopy (e.g., “Town of …”).
  • population — when present, use as a secondary sort for relevance.
  • id, osm_id, osm_type — stable identifiers you can cache/dedupe.

Search by name — example

{
  "query": "sofia",
  "count": 1,
  "places": [
    {
      "id": 727011,
      "name": "Sofia",
      "country_code": "BG",
      "osm_id": 240109189,
      "osm_type": "relation",
      "type": "city",
      "population": 1286383,
      "lat": 42.6977,
      "lng": 23.3219,
      "bbox": {
        "min_lat": 42.582, "max_lat": 42.815,
        "min_lng": 23.042, "max_lng": 23.461
      },
      "address": { "city": "Sofia", "state": "Sofia City Province", "country": "Bulgaria" },
      "display_name": "Sofia, Bulgaria"
    }
  ]
}
  • bbox — fit your map viewport instantly without guessing zoom levels.
  • address{...} — render breadcrumb/secondary text in lists.
  • Ambiguity: combine country_code filter + population to rank “the right Sofia”.

#Recommended actions

  • Autosuggest UX: call /find-by-name after 2–3 chars; limit to 5–10; display display_name.
  • “Near me” lists: call /find-by-coord with radius=10..25; show distance using dist_km.
  • Map integration: after selection, center on lat/lng; if bbox exists, do a fit-bounds.
  • Persistence: store id/osm_id to avoid duplicates and to refresh details later.

#Troubleshooting & field notes

  1. 400 “Missing lat/lng” or “Missing q”: send required params and ensure numeric types for coordinates.
  2. No results: increase radius (coords) or broaden q; remove country_code filter.
  3. Performance: keep limit tight (≤10 for typeahead) and paginate with offset for long lists.
  4. International names: the API handles diacritics; display display_name to avoid locale surprises.
  5. Rate limits: debounce input (≥250 ms); call on blur/enter for mobile to save requests.

#API Changelog

2025-10-20
Added dist_km to coordinate searches and bbox to name searches. Unified response fields (id, type, population, display_name) across endpoints.
2025-10-12
Introduced pagination with limit/offset. Improved ranking for ambiguous names using population signals.
2025-10-01
Public release of /find-by-coord and /find-by-name with country filter support.

שאלות נפוצות

ערים, עיירות וכפרים מנתוני OSM גלובליים.

כן, עבור שאילתות של 3+ תווים, נעשה שימוש בחיפוש טקסט מלא והתאמת קידומת סובלנית לשגיאות.

כן. כל בקשה, גם כאלה שמובילות לשגיאות, צורכת קרדיטים. הקרדיטים שלך קשורים למספר הבקשות, ללא קשר להצלחה או כישלון. אם השגיאה נובעת בבירור מבעיה בפלטפורמה מצידנו, נשחזר את הקרדיטים המושפעים (ללא החזר כספי).

צרו איתנו קשר ב-[email protected]. אנחנו מתייחסים למשוב ברצינות—אם דוח הבאג או בקשת הפיצ'ר שלכם משמעותיים, נוכל לתקן או לשפר את ה-API במהירות ולהעניק לכם 50 קרדיטים חינם כתודה.

זה תלוי ב-API ולפעמים אפילו ב-endpoint. חלק מה-endpoints משתמשים בנתונים ממקורות חיצוניים, שעשויים להיות בעלי מגבלות מחמירות יותר. אנחנו גם אוכפים מגבלות כדי למנוע שימוש לרעה ולשמור על יציבות הפלטפורמה. בדקו את התיעוד למגבלה הספציפית של כל endpoint.

אנחנו פועלים על מערכת קרדיטים. קרדיטים הם יחידות ששולמו מראש ואינן ניתנות להחזר, שאתם מוציאים על קריאות API וכלים. קרדיטים נצרכים בשיטת FIFO (הישנים ביותר קודם) ותקפים ל-12 חודשים מתאריך הרכישה. לוח הבקרה מציג כל תאריך רכישה ותפוגתו.

כן. כל הקרדיטים שנרכשו (כולל יתרות חלקיות) תקפים ל-12 חודשים מהרכישה. קרדיטים שלא נוצלו פגים אוטומטית ונמחקים לצמיתות בסוף תקופת התוקף. קרדיטים שפגו לא ניתנים לשחזור או להמרה למזומן או ערך אחר. כלל מעבר: קרדיטים שנרכשו לפני 22 בספט׳ 2025 מטופלים כאילו נרכשו ב-22 בספט׳ 2025 ופגים ב-22 בספט׳ 2026 (אלא אם צוין תאריך תפוגה מוקדם יותר ברכישה).

כן—בתוך חלון התוקף שלהם. קרדיטים שלא נוצלו נשארים זמינים ומועברים מחודש לחודש עד שהם פגים 12 חודשים לאחר הרכישה.

קרדיטים הם לא ניתנים להחזר. קנו רק מה שאתם צריכים—תמיד תוכלו לטעון שוב מאוחר יותר. אם שגיאת פלטפורמה גורמת לחיוב כושל, אנו עשויים לשחזר את הקרדיטים המושפעים לאחר בדיקה. ללא החזר כספי.

המחירים נקבעים בקרדיטים, לא בדולרים. לכל endpoint יש עלות משלו—ראו את תג "קרדיטים / בקשה" למעלה. תמיד תדעו בדיוק כמה אתם מוציאים.
← חזרה ל-APIs