🌐 US-Proxy
class="bg-bg-sheet">
Yep

Get started with Yep API

To get started, sign up for free. Once you have your API key, you're ready to make your first API call.

Markdown

Authentication

All API requests require authentication using your API key. Pass it in the Authorization header:

Authorization: Bearer $YEP_API_KEY
Keep your API key secure! Never expose it in client-side code or public repositories.

You can manage your API keys in the API Keys section.

Rate Limits

To ensure optimal performance for all users, the API enforces the following rate limits:

  • 60 requests per minute per API key
  • 3,600 requests per hour per API key
  • 86,400 requests per day per API key

If you exceed any of these limits, you'll receive a 429 Too Many Requests response.

All API responses include rate limit headers:

Header Description
X-RateLimit-Limit Maximum requests allowed per minute
X-RateLimit-Remaining Requests remaining in the current window
X-RateLimit-Reset Seconds until the rate limit window resets

Org admins can tighten these per-key via the management keys API.

Need higher limits? Contact our support team to discuss enterprise options.

Error Handling

The API uses standard HTTP status codes and returns error details in the response body:

Status code Description
200 Success
400 Bad Request — Missing or invalid parameters
401 Unauthorized — Invalid API credentials
402 Payment Required — Insufficient account balance
403 Forbidden — Insufficient permissions
404 Not Found — Endpoint or resource not found
429 Too Many Requests — Rate limit exceeded
500 Internal Server Error

Error response format

{
  "error": "Error message describing the issue",
  "request_id": "req_abc123"
}

Search Endpoint

POST /api/search

Search for content across the platform. Returns a list of matching items by proxying to our advanced search service.

Base cost: $0.004/request for up to 20 results. Each additional result adds $0.001. Only returned results are charged. Highlights are included at no extra cost.

Request Parameters

Parameter Type Required Description
query string Yes Search query string (1–1,000 characters)
type string No Type of search: "basic" (default) or "highlights". The basic search includes URL, meta titles, and meta descriptions. The highlights search additionally includes relevant text highlights from the page content.
limit integer No Maximum number of results to return (default: 10, max: 100)
language array No Filter results by language using ISO 639-1 codes. Pass as an array (e.g., ["en"], ["fr", "en"]). See Supported Languages.
location string No Prefer results for one country, using a single ISO 3166-1 alpha-2 code (e.g., "DE"). This steers ranking towards that country's sites and sources rather than excluding pages from elsewhere, so how much the result set changes depends on the query. See Supported Locations.
content_type string No Filter by content type. Selecting a type includes all its subtypes. See Content Types.
safe_search boolean No Exclude pages classified under the Adult category (default: false).
include_domains string No Comma-separated full URLs. Only return results from these domains (e.g., https://example.com,https://other.com).
exclude_domains string No Comma-separated full URLs. Exclude results from these domains.
start_published_date string No Filter by page published date (start). ISO 8601 format: 2024-01-15 or 2024-01-15T12:30:00Z.
end_published_date string No Filter by page published date (end). ISO 8601 format.
start_crawl_date string No Filter by when the page was last crawled (start). ISO 8601 format.
end_crawl_date string No Filter by when the page was last crawled (end). ISO 8601 format.

Example Request

curl -X POST "https://platform.yep.com/api/search" \
     -H "Authorization: Bearer $YEP_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"query": "saratoga spring water", "type": "basic", "limit": 10, "language": ["en"], "location": "US"}'
const YEP_API_KEY = process.env.YEP_API_KEY;

fetch('https://platform.yep.com/api/search', {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${YEP_API_KEY}`,
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
    "query": "saratoga spring water",
    "type": "basic",
    "limit": 10,
    "language": [
        "en"
    ],
    "location": "US"
})
})
.then(response => response.json())
.then(data => console.log(data));
import os
import requests

response = requests.post(
    'https://platform.yep.com/api/search',
    headers={'Authorization': f'Bearer {os.environ["YEP_API_KEY"]}'},
    json={
        'query': 'saratoga spring water',
        'type': 'basic',
        'limit': 10,
        'language': ['en'],
        'location': 'US'
    }
)
print(response.json())
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://platform.yep.com/api/search');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . getenv('YEP_API_KEY'),
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"query": "saratoga spring water", "type": "basic", "limit": 10, "language": ["en"], "location": "US"}');
$response = curl_exec($ch);
curl_close($ch);
echo $response;

Example Responses

{
  "success": true,
  "request_id": "req_abc123",
  "query": "saratoga spring water",
  "type": "basic",
  "language": "en",
  "location": "DE",
  "results": [
    // Array of search results from our backend search service
  ],
  "response_time_ms": 145.67,
  "api_cost": {
    "cost": 0.004,
    "details": "(4/1000)"
  },
  "balance": {
    "before": 9.50,
    "after": 9.496
  }
}
{
  "error": "Search query (query) is required.",
  "request_id": "req_abc123"
}
{
  "error": "Type parameter must be either \"basic\" or \"highlights\".",
  "request_id": "req_abc123"
}
{
  "error": "Insufficient funds. Please add funds to your account.",
  "balance": 0.002,
  "required": 0.014,
  "request_id": "req_abc123"
}

Content Types

The following content types can be used with the content_type parameter. Selecting a type automatically includes all its subtypes (111 total subtypes across all types).

Type Example Subtypes
Article How_to, Tutorial_or_Guide, Listicle, Comparisons, Roundup, Product_or_Brand_Review, Opinion_Piece, News_Update, Recipe, FAQ, Wiki
Video How_to, Tutorial_or_Guide, Listicle, Comparisons, Product_or_Brand_Review, News_Update, Interview, Webinar, Vlog
Image Infographic, Photography, Vector_Illustration, Meme, Diagram, Flowchart
Audio Podcast, Webinar, Interview, Music, Audiobook
Document Case_Study, Ebook, White_Paper, Research_Paper, Template, Report, Manual
Listing Product, Property, Job, Service, Event, Location, Business
Listing_Collection Product, Property, Job, Service, Event, Location, Business
Landing_Page Service_Page, Location_Page, Product_Page, Pricing_Page
Interactive_Tools Calculator, SaaS_Software, Map, Quiz, Generator
User_Generated_Content Forum_Thread, Discussions, Social_Media_Post, Reviews, Q_A
Core_Page Homepage, About_Page, Contact_Page, FAQ_Page, Blog_Index, Careers_Page

Supported Languages

The following ISO 639-1 language codes can be used with the language parameter. You can also retrieve this list programmatically via GET /api/languages (no authentication required).

Code Language
aa Afar
ab Abkhazian
ae Avestan
af Afrikaans
ak Akan
am Amharic
an Aragonese
ar Arabic
as Assamese
av Avaric
ay Aymara
az Azerbaijani
ba Bashkir
be Belarusian
bg Bulgarian
bi Bislama
bm Bambara
bn Bengali
bo Tibetan
br Breton
bs Bosnian
ca Catalan
ce Chechen
ch Chamorro
co Corsican
cr Cree
cs Czech
cu Church Slavonic
cv Chuvash
cy Welsh
da Danish
de German
dv Divehi
dz Dzongkha
ee Ewe
el Greek
en English
eo Esperanto
es Spanish
et Estonian
eu Basque
fa Persian
ff Fulah
fi Finnish
fj Fijian
fo Faroese
fr French
fy Western Frisian
ga Irish
gd Gaelic
gl Galician
gn Guarani
gu Gujarati
gv Manx
ha Hausa
he Hebrew
hi Hindi
ho Hiri Motu
hr Croatian
ht Haitian
hu Hungarian
hy Armenian
hz Herero
ia Interlingua
id Indonesian
ie Interlingue
ig Igbo
ii Sichuan Yi
ik Inupiaq
io Ido
is Icelandic
it Italian
iu Inuktitut
ja Japanese
jv Javanese
ka Georgian
kg Kongo
ki Kikuyu
kj Kuanyama
kk Kazakh
kl Kalaallisut
km Central Khmer
kn Kannada
ko Korean
kr Kanuri
ks Kashmiri
ku Kurdish
kv Komi
kw Cornish
ky Kyrgyz
la Latin
lb Luxembourgish
lg Ganda
li Limburgan
ln Lingala
lo Lao
lt Lithuanian
lu Luba-Katanga
lv Latvian
mg Malagasy
mh Marshallese
mi Maori
mk Macedonian
ml Malayalam
mn Mongolian
mr Marathi
ms Malay
mt Maltese
my Burmese
na Nauru
nb Norwegian Bokmål
nd North Ndebele
ne Nepali
ng Ndonga
nl Dutch
nn Norwegian Nynorsk
no Norwegian
nr South Ndebele
nv Navajo
ny Chichewa
oc Occitan
oj Ojibwa
om Oromo
or Oriya
os Ossetian
pa Punjabi
pi Pali
pl Polish
ps Pashto
pt Portuguese
qu Quechua
rm Romansh
rn Rundi
ro Romanian
ru Russian
rw Kinyarwanda
sa Sanskrit
sc Sardinian
sd Sindhi
se Northern Sami
sg Sango
si Sinhala
sk Slovak
sl Slovenian
sm Samoan
sn Shona
so Somali
sq Albanian
sr Serbian
ss Swati
st Southern Sotho
su Sundanese
sv Swedish
sw Swahili
ta Tamil
te Telugu
tg Tajik
th Thai
ti Tigrinya
tk Turkmen
tl Tagalog
tn Tswana
to Tonga
tr Turkish
ts Tsonga
tt Tatar
tw Twi
ty Tahitian
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
ve Venda
vi Vietnamese
vo Volapük
wa Walloon
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
za Zhuang
zh Chinese
zu Zulu

Supported Locations

The following ISO 3166-1 alpha-2 country codes can be used with the location parameter. Codes are case-insensitive, and UK is accepted as an alias for GB. You can also retrieve this list programmatically via GET /api/locations (no authentication required).

Code Location
AD Andorra
AE United Arab Emirates
AF Afghanistan
AG Antigua and Barbuda
AI Anguilla
AL Albania
AM Armenia
AO Angola
AQ Antarctica
AR Argentina
AS American Samoa
AT Austria
AU Australia
AW Aruba
AX Åland Islands
AZ Azerbaijan
BA Bosnia and Herzegovina
BB Barbados
BD Bangladesh
BE Belgium
BF Burkina Faso
BG Bulgaria
BH Bahrain
BI Burundi
BJ Benin
BL Saint Barthélemy
BM Bermuda
BN Brunei Darussalam
BO Bolivia
BQ Bonaire, Sint Eustatius and Saba
BR Brazil
BS Bahamas
BT Bhutan
BV Bouvet Island
BW Botswana
BY Belarus
BZ Belize
CA Canada
CC Cocos (Keeling) Islands
CD Congo, The Democratic Republic of the
CF Central African Republic
CG Congo
CH Switzerland
CI Côte d'Ivoire
CK Cook Islands
CL Chile
CM Cameroon
CN China
CO Colombia
CR Costa Rica
CU Cuba
CV Cabo Verde
CW Curaçao
CX Christmas Island
CY Cyprus
CZ Czechia
DE Germany
DJ Djibouti
DK Denmark
DM Dominica
DO Dominican Republic
DZ Algeria
EC Ecuador
EE Estonia
EG Egypt
EH Western Sahara
ER Eritrea
ES Spain
ET Ethiopia
FI Finland
FJ Fiji
FK Falkland Islands (Malvinas)
FM Micronesia, Federated States of
FO Faroe Islands
FR France
GA Gabon
GB United Kingdom
GD Grenada
GE Georgia
GF French Guiana
GG Guernsey
GH Ghana
GI Gibraltar
GL Greenland
GM Gambia
GN Guinea
GP Guadeloupe
GQ Equatorial Guinea
GR Greece
GS South Georgia and the South Sandwich Islands
GT Guatemala
GU Guam
GW Guinea-Bissau
GY Guyana
HK Hong Kong
HM Heard Island and McDonald Islands
HN Honduras
HR Croatia
HT Haiti
HU Hungary
ID Indonesia
IE Ireland
IL Israel
IM Isle of Man
IN India
IO British Indian Ocean Territory
IQ Iraq
IR Iran
IS Iceland
IT Italy
JE Jersey
JM Jamaica
JO Jordan
JP Japan
KE Kenya
KG Kyrgyzstan
KH Cambodia
KI Kiribati
KM Comoros
KN Saint Kitts and Nevis
KP North Korea
KR South Korea
KW Kuwait
KY Cayman Islands
KZ Kazakhstan
LA Laos
LB Lebanon
LC Saint Lucia
LI Liechtenstein
LK Sri Lanka
LR Liberia
LS Lesotho
LT Lithuania
LU Luxembourg
LV Latvia
LY Libya
MA Morocco
MC Monaco
MD Moldova
ME Montenegro
MF Saint Martin (French part)
MG Madagascar
MH Marshall Islands
MK North Macedonia
ML Mali
MM Myanmar
MN Mongolia
MO Macao
MP Northern Mariana Islands
MQ Martinique
MR Mauritania
MS Montserrat
MT Malta
MU Mauritius
MV Maldives
MW Malawi
MX Mexico
MY Malaysia
MZ Mozambique
NA Namibia
NC New Caledonia
NE Niger
NF Norfolk Island
NG Nigeria
NI Nicaragua
NL Netherlands
NO Norway
NP Nepal
NR Nauru
NU Niue
NZ New Zealand
OM Oman
PA Panama
PE Peru
PF French Polynesia
PG Papua New Guinea
PH Philippines
PK Pakistan
PL Poland
PM Saint Pierre and Miquelon
PN Pitcairn
PR Puerto Rico
PS Palestine, State of
PT Portugal
PW Palau
PY Paraguay
QA Qatar
RE Réunion
RO Romania
RS Serbia
RU Russian Federation
RW Rwanda
SA Saudi Arabia
SB Solomon Islands
SC Seychelles
SD Sudan
SE Sweden
SG Singapore
SH Saint Helena, Ascension and Tristan da Cunha
SI Slovenia
SJ Svalbard and Jan Mayen
SK Slovakia
SL Sierra Leone
SM San Marino
SN Senegal
SO Somalia
SR Suriname
SS South Sudan
ST Sao Tome and Principe
SV El Salvador
SX Sint Maarten (Dutch part)
SY Syria
SZ Eswatini
TC Turks and Caicos Islands
TD Chad
TF French Southern Territories
TG Togo
TH Thailand
TJ Tajikistan
TK Tokelau
TL Timor-Leste
TM Turkmenistan
TN Tunisia
TO Tonga
TR Türkiye
TT Trinidad and Tobago
TV Tuvalu
TW Taiwan
TZ Tanzania
UA Ukraine
UG Uganda
UM United States Minor Outlying Islands
US United States
UY Uruguay
UZ Uzbekistan
VA Holy See (Vatican City State)
VC Saint Vincent and the Grenadines
VE Venezuela
VG Virgin Islands, British
VI Virgin Islands, U.S.
VN Vietnam
VU Vanuatu
WF Wallis and Futuna
WS Samoa
YE Yemen
YT Mayotte
ZA South Africa
ZM Zambia
ZW Zimbabwe

Management Keys

Programmatically provision API keys for your organization. Authenticates with a management key, distinct from the search API keys above. Org admins mint management keys at Management keys.

Authorization: Bearer $YEP_MANAGEMENT_KEY

A management key is bound to one organization and one member; every call operates inside that scope. Keys are identified by their SHA-256 hash in all URLs.

Per-key limits

Each API key has three optional overrides: limit_per_minute, limit_per_hour, limit_per_day. When null, the platform defaults apply (60 / 3,600 / 86,400). Overrides must be at most the platform default for their window — higher values are rejected with 422.

Key object

{
  "hash": "6b3c…",
  "label": "yep_1a2b3c4d",
  "name": "production",
  "disabled": false,
  "limit_per_minute": 10,
  "limit_per_hour": null,
  "limit_per_day": null,
  "effective_limit_per_minute": 10,
  "effective_limit_per_hour": 3600,
  "effective_limit_per_day": 86400,
  "last_used_at": "2026-04-17T10:42:11+00:00",
  "created_at": "…",
  "updated_at": "…"
}
  • limit_per_* is the stored override; null means the platform default applies.
  • effective_limit_per_* is what's enforced right now.

List keys

GET /api/management/keys

List every API key in the organization. Results are ordered newest first.

Request parameters (query string)

Parameter Type Required Description
offset integer No Pagination offset (default 0).
limit integer No Page size (default 100, max 100).

Example request

curl -sS 'https://platform.yep.com/api/management/keys?limit=50' \
  -H "Authorization: Bearer $YEP_MANAGEMENT_KEY"

Example response

{
  "data": [
    {
      "hash": "6b3c…",
      "label": "yep_1a2b3c4d",
      "name": "production",
      "disabled": false,
      "limit_per_minute": 10,
      "limit_per_hour": null,
      "limit_per_day": null,
      "effective_limit_per_minute": 10,
      "effective_limit_per_hour": 3600,
      "effective_limit_per_day": 86400,
      "last_used_at": "2026-04-17T10:42:11+00:00",
      "created_at": "…",
      "updated_at": "…"
    }
  ]
}

Create key

POST /api/management/keys

Create a new API key under this organization, owned by the member bound to your management key. The plaintext token is returned once; only its hash is stored.

Request parameters (JSON body)

Parameter Type Required Description
name string Yes Human-readable label (max 100 characters).
limit_per_minute integer No Per-minute request cap for this key. Must be ≤ 60. Omit for the platform default.
limit_per_hour integer No Per-hour request cap for this key. Must be ≤ 3,600. Omit for the platform default.
limit_per_day integer No Per-day request cap for this key. Must be ≤ 86,400. Omit for the platform default.

Example request

curl -sS -X POST 'https://platform.yep.com/api/management/keys' \
  -H "Authorization: Bearer $YEP_MANAGEMENT_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"production","limit_per_minute":10}'

Example response

{
  "key": "plaintext-token-shown-once",
  "data": {
    "hash": "6b3c…",
    "label": "yep_1a2b3c4d",
    "name": "production",
    "disabled": false,
    "limit_per_minute": 10,
    "limit_per_hour": null,
    "limit_per_day": null,
    "effective_limit_per_minute": 10,
    "effective_limit_per_hour": 3600,
    "effective_limit_per_day": 86400,
    "last_used_at": null,
    "created_at": "2026-04-17T10:42:11+00:00",
    "updated_at": "2026-04-17T10:42:11+00:00"
  }
}

Get key

GET /api/management/keys/{hash}

Fetch a single key by its SHA-256 hash. Returns 404 when the hash is unknown or belongs to another organization.

Request parameters (path)

Parameter Type Required Description
hash string Yes 64-character SHA-256 hash of the target API key.

Example request

curl -sS 'https://platform.yep.com/api/management/keys/6b3c…' \
  -H "Authorization: Bearer $YEP_MANAGEMENT_KEY"

Example response

{
  "data": {
    "hash": "6b3c…",
    "label": "yep_1a2b3c4d",
    "name": "production",
    "disabled": false,
    "limit_per_minute": 10,
    "limit_per_hour": null,
    "limit_per_day": null,
    "effective_limit_per_minute": 10,
    "effective_limit_per_hour": 3600,
    "effective_limit_per_day": 86400,
    "last_used_at": "2026-04-17T10:42:11+00:00",
    "created_at": "…",
    "updated_at": "…"
  }
}

Update key

PATCH /api/management/keys/{hash}

Partially update a key. Any limit_per_* field may be set to null to clear the override and revert to the platform default.

Request parameters (JSON body — all optional)

Parameter Type Required Description
name string No New label (max 100 characters).
disabled boolean No true blocks all /api/search calls using this key.
limit_per_minute integer | null No New per-minute override (must be ≤ 60), or null to clear.
limit_per_hour integer | null No New per-hour override (must be ≤ 3,600), or null to clear.
limit_per_day integer | null No New per-day override (must be ≤ 86,400), or null to clear.

Example request

curl -sS -X PATCH 'https://platform.yep.com/api/management/keys/6b3c…' \
  -H "Authorization: Bearer $YEP_MANAGEMENT_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"disabled":true,"limit_per_minute":5}'

Example response

{
  "data": {
    "hash": "6b3c…",
    "label": "yep_1a2b3c4d",
    "name": "production",
    "disabled": true,
    "limit_per_minute": 5,
    "limit_per_hour": null,
    "limit_per_day": null,
    "effective_limit_per_minute": 5,
    "effective_limit_per_hour": 3600,
    "effective_limit_per_day": 86400,
    "last_used_at": "2026-04-17T10:42:11+00:00",
    "created_at": "…",
    "updated_at": "2026-04-17T10:50:00+00:00"
  }
}

Delete key

DELETE /api/management/keys/{hash}

Revoke a key (soft-delete). Subsequent calls to /api/search with the underlying token return 401.

Request parameters (path)

Parameter Type Required Description
hash string Yes 64-character SHA-256 hash of the target API key.

Example request

curl -sS -X DELETE 'https://platform.yep.com/api/management/keys/6b3c…' \
  -H "Authorization: Bearer $YEP_MANAGEMENT_KEY"

Example response

{
  "data": {
    "hash": "6b3c…",
    "deleted": true
  }
}