Limon APIlimon.kg ↗
Fetch full text, metadata, cover photo, category, keywords, and paywall status for any Limon.kg news article by its numeric ID.
What is the Limon API?
The Limon.kg API provides access to Kyrgyzstan-focused news content through a single endpoint, get_article, returning 10 structured fields per article including the full body in three formats (plain text, paragraph list, and original HTML), cover photo, inline images, view count, category, tags, and paywall status. Pass any numeric article ID from a limon.kg/ru/news: URL to retrieve the complete record in one request.
curl -X GET 'https://api.parse.bot/scraper/4e2902f2-b79f-4ec6-9e37-7fcddc6e592e/get_article?article_id=65736' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace limon-kg-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Limon.kg news article lookup — fetch and inspect a single article."""
from parse_apis.limon_kg_api import Limon, ArticleNotFound
client = Limon()
# Fetch a known article by its numeric ID.
try:
article = client.articles.get(article_id="65736")
except ArticleNotFound:
print("Article not found")
raise
# Inspect core metadata.
print(article.title)
print("Language:", article.language, "| Views:", article.views)
print("Published:", article.published_at, "| Paid:", article.is_paid)
print("URL:", article.url)
# Primary category.
print("Category:", article.category.name)
# Breadcrumb categories (parent-first).
for cat in article.categories:
print(" -", cat.name, f"(id={cat.id})")
# Keywords.
print("Keywords:", ", ".join(article.keywords))
# Cover photo and inline images.
if article.photo:
print("Cover:", article.photo)
print(f"{len(article.images)} inline image(s)")
# Body preview (first paragraph).
if article.paragraphs:
print("Lead paragraph:", article.paragraphs[0][:120])
print("exercised: articles.get")
Returns one Limon.kg article by its numeric ID (the number after 'news:' in the article URL) in a single round trip: title, lead description, the full body as plain text, as an ordered list of paragraphs, and as the site's original HTML, plus inline image URLs, cover photo, category, breadcrumb categories, keywords, publish/update timestamps and view count. Article bodies are stored in one language and are returned as written; `language` is read from the article's own URL. Category names are returned in Russian. An ID that does not correspond to a published article yields a stale_input (input_not_found) error rather than an empty result.
| Param | Type | Description |
|---|---|---|
| article_idrequired | string | Numeric article ID as it appears in the article URL after 'news:' (e.g. 65736). |
{
"type": "object",
"fields": {
"id": "article ID as a string, identical to the article_id input",
"url": "canonical article page URL",
"text": "full article body as plain text, paragraphs separated by newlines",
"photo": "cover photo URL or null",
"title": "article headline",
"views": "integer view count",
"images": "array of inline image URLs found in the body",
"is_paid": "boolean, true when the article is behind the site's paywall",
"category": "object {id, name} of the primary category",
"keywords": "array of tag strings",
"language": "two-letter language code of the article page (from its URL)",
"text_html": "article body as the site's original HTML",
"categories": "array of {id, name, parent_id} breadcrumb categories, flattened parent-first",
"paragraphs": "array of body paragraph strings in reading order (block-level elements only, so lead text outside a block is only in text)",
"updated_at": "ISO 8601 last-update timestamp with offset",
"description": "lead/summary text, may be an empty string",
"published_at": "ISO 8601 publish timestamp with offset"
},
"sample": {
"data": {
"id": "65736",
"url": "https://limon.kg/ru/news:65736",
"text": "P.s. хочешь попасть в команду Limon Media? Это легко сделать нажав сюда\n(Вакансия)\nСудьба любит смельчаков. И, кажется, нам удалось найти одного из них.\nНью-Йорк. Вечер завершает очередной будний день.",
"photo": "https://cdn-1.aki.kg/st_limon/6/1430218517_0.jpg",
"title": "Как обычный парень из Оша Тимур Тиленов покоряет сегодня Wall Street",
"views": 1213,
"images": [
"http://cdn-1.aki.kg/127/.storage/limon2/images/aprill2015/f8e56185dcda06ee6321640af7e1474f.JPG"
],
"is_paid": false,
"category": {
"id": "1",
"name": "Стартапы и Бизнес"
},
"keywords": [
"Карьера",
"Тимур Тиленов"
],
"language": "ru",
"text_html": "<p>Нью-Йорк. Вечер завершает очередной будний день.</p>",
"categories": [
{
"id": "14",
"name": "Карьера",
"parent_id": "0"
},
{
"id": "41",
"name": "Финансы и аудит",
"parent_id": "14"
}
],
"paragraphs": [
"P.s. хочешь попасть в команду Limon Media? Это легко сделать нажав сюда (Вакансия)",
"Нью-Йорк. Вечер завершает очередной будний день."
],
"updated_at": "2015-04-28T14:48:22+06:00",
"description": "Судьба любит смельчаков. И, кажется, нам удалось найти одного из них.",
"published_at": "2015-04-28T14:48:22+06:00"
},
"status": "success"
}
}About the Limon API
What the API Returns
The get_article endpoint accepts a single required parameter, article_id — the numeric portion of a Limon.kg article URL after news: (for example, 65736 from /ru/news:65736). The response includes the article title, a url pointing to the canonical page, and the body delivered three ways: text as a plain-text string with newline-separated paragraphs, and the site's original HTML. The photo field carries the cover image URL (or null when none exists), and images is an ordered array of any inline image URLs embedded in the body.
Metadata Fields
Each response also returns category as an object with id and name, giving the primary editorial section the article belongs to. The keywords array lists the tag strings attached to the article, useful for topic clustering or filtering. views gives the integer read count at the time of the request. The is_paid boolean signals whether the article sits behind the site's paywall — relevant when deciding whether to surface a full body or a preview.
Coverage and Scope
Limon.kg is a Kyrgyz news outlet publishing in Russian and Kyrgyz. Articles span local politics, society, economics, and general news relevant to Central Asia. The API resolves one article per call by its numeric ID; there is no batch or search endpoint in the current version.
The Limon API is a managed, monitored endpoint for limon.kg — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when limon.kg changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official limon.kg API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a Kyrgyzstan news aggregator using
title,category, andkeywordsto classify and display articles. - Archive limon.kg content by iterating known article IDs and storing
textandphotolocally. - Filter paywalled content in a reader app using the
is_paidboolean before rendering the full body. - Track article popularity over time by periodically fetching
viewsfor a set of article IDs. - Extract inline media assets from articles using the
imagesarray for a media monitoring pipeline. - Perform keyword or topic analysis on Central Asian news using the
keywordsandtextfields. - Display cover images and headlines in a news card UI using
photo,title, andurl.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Limon.kg offer an official developer API?+
What does the get_article endpoint return for paywalled articles?+
is_paid: true for paywalled articles. The title, url, category, keywords, photo, and views fields are still populated, but the text and images fields may be empty or partial depending on how much content the site exposes without authentication.Can I search or list articles by category or date rather than by ID?+
article_id. There is no search, listing, or date-range endpoint. You can fork this API on Parse and revise it to add a category or date-based listing endpoint.Is there a way to retrieve multiple articles in a single request?+
get_article endpoint resolves one article per call. Batch retrieval is not part of the current API. You can fork it on Parse and revise to add a multi-ID batch endpoint.How fresh is the data returned for a given article ID?+
views and other mutable fields reflect the state at request time. There is no built-in cache expiry control or webhook for update notifications in the current version.