voshod-solnca APIvoshod-solnca.ru ↗
Get the next Ekadashi fasting date, start time, fasting window, and a full-year calendar of Ekadashi days for any supported Russian city.
What is the voshod-solnca API?
The voshod-solnca.ru API exposes 1 endpoint — get_next_ekadashi — that returns 9 structured fields covering the nearest Ekadashi fasting date, precise fasting start and end window, and a full list of upcoming Ekadashi days for a given city. Cities are specified in Russian (e.g. москва, алматы), and the response includes per-entry timing details such as tithi start and sunrise for each date in the calendar.
curl -X GET 'https://api.parse.bot/scraper/9af620de-ce55-4245-82c0-1973a1148805/get_next_ekadashi' \ -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 voshod-solnca-ru-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.
"""
Ekadashi Fasting Calendar API Client
Retrieve Ekadashi fasting schedules and upcoming fasting dates for cities across Russia.
Get your API key from: https://parse.bot/settings
"""
import os
import requests
from typing import Optional, Dict, Any, List
from dataclasses import dataclass
from datetime import datetime
@dataclass
class EkadashiInfo:
"""Structured representation of Ekadashi fasting information."""
city: str
ekadashi_date: str
day_of_week: str
fast_start_time: str
fast_end_date: str
fast_end_window_start: str
fast_end_window_end: str
raw_info: str
upcoming_ekadashi: List[Dict[str, str]]
def __str__(self) -> str:
return (
f"🕉️ Ekadashi Fasting Schedule for {self.city.title()}\n"
f"{'─' * 50}\n"
f"Next Ekadashi: {self.ekadashi_date} ({self.day_of_week})\n"
f"Fast Begins: {self.fast_start_time}\n"
f"Fast Ends: {self.fast_end_date}\n"
f"Break Fast Window: {self.fast_end_window_start} - {self.fast_end_window_end}\n"
f"Upcoming Events: {len(self.upcoming_ekadashi)} scheduled"
)
class ParseClient:
"""Client for the Ekadashi Fasting Calendar API."""
def __init__(self, api_key: Optional[str] = None):
"""
Initialize the Parse API client.
Args:
api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
"""
self.base_url = "https://api.parse.bot"
self.scraper_id = "9af620de-ce55-4245-82c0-1973a1148805"
self.api_key = api_key or os.getenv("PARSE_API_KEY")
if not self.api_key:
raise ValueError(
"API key not provided. Set PARSE_API_KEY environment variable or pass api_key parameter."
)
def _call(
self, endpoint: str, method: str = "POST", **params
) -> Dict[str, Any]:
"""
Make an API call to the Parse service.
Args:
endpoint: The endpoint name (e.g., 'get_next_ekadashi')
method: HTTP method ('GET' or 'POST')
**params: Query/body parameters
Returns:
Parsed JSON response as dictionary
Raises:
requests.RequestException: If the API call fails
"""
url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
headers = {
"X-API-Key": self.api_key,
"Content-Type": "application/json",
}
try:
if method.upper() == "GET":
response = requests.get(url, headers=headers, params=params)
else:
response = requests.post(url, headers=headers, json=params)
response.raise_for_status()
return response.json()
except requests.RequestException as e:
print(f"API Error: {e}")
raise
def get_next_ekadashi(self, city: str) -> EkadashiInfo:
"""
Get the next Ekadashi fasting day and upcoming calendar for a city.
Args:
city: City name in Russian (e.g., 'москва', 'санкт-петербург', 'алматы')
Returns:
EkadashiInfo object with structured fasting schedule data
Example:
>>> client = ParseClient()
>>> info = client.get_next_ekadashi('москва')
>>> print(info)
"""
result = self._call("get_next_ekadashi", method="GET", city=city)
return EkadashiInfo(
city=result.get("city", city),
ekadashi_date=result.get("ekadashi_date", ""),
day_of_week=result.get("day_of_week", ""),
fast_start_time=result.get("fast_start_time", ""),
fast_end_date=result.get("fast_end_date", ""),
fast_end_window_start=result.get("fast_end_window_start", ""),
fast_end_window_end=result.get("fast_end_window_end", ""),
raw_info=result.get("raw_info", ""),
upcoming_ekadashi=result.get("upcoming_ekadashi", []),
)
def main():
"""Demonstrate practical usage of the Ekadashi Fasting Calendar API."""
# Initialize the client (API key from environment)
client = ParseClient()
# List of major Russian cities to check Ekadashi schedules
cities = ["москва", "санкт-петербург", "алматы"]
print("=" * 60)
print("🕉️ EKADASHI FASTING CALENDAR - MULTI-CITY LOOKUP")
print("=" * 60)
print()
# Collect all Ekadashi data for comparison
ekadashi_data: Dict[str, EkadashiInfo] = {}
for city in cities:
try:
print(f"📍 Fetching Ekadashi schedule for {city.title()}...")
ekadashi_info = client.get_next_ekadashi(city)
ekadashi_data[city] = ekadashi_info
# Display the formatted information
print(ekadashi_info)
print()
except Exception as e:
print(f"❌ Failed to fetch data for {city}: {e}")
print()
# Analyze and compare across cities
if ekadashi_data:
print("=" * 60)
print("📊 COMPARATIVE ANALYSIS")
print("=" * 60)
print()
# Show earliest Ekadashi across all cities
earliest_city = None
earliest_date = None
for city, info in ekadashi_data.items():
try:
# Parse date in Russian format (e.g., "11 июня 2026")
date_str = info.ekadashi_date.split()[0]
if earliest_date is None or int(date_str) < int(earliest_date):
earliest_date = date_str
earliest_city = city
except (ValueError, IndexError):
continue
if earliest_city:
print(f"⏰ Earliest upcoming Ekadashi: {earliest_city.title()}")
print(
f" Date: {ekadashi_data[earliest_city].ekadashi_date}"
)
print(
f" Fast begins at: {ekadashi_data[earliest_city].fast_start_time}"
)
print()
# Show upcoming schedule for first city (detailed)
first_city = list(ekadashi_data.keys())[0]
upcoming = ekadashi_data[first_city].upcoming_ekadashi
if upcoming:
print(f"📅 Upcoming Ekadashi events for {first_city.title()}:")
print(f" Total scheduled: {len(upcoming)} fasting days")
print()
for i, event in enumerate(upcoming[:5], 1):
date = event.get("date", "N/A")
day = event.get("day_of_week", "N/A")
start = event.get("fast_start_time", "N/A")
sunrise = event.get("sunrise", "N/A")
print(
f" {i}. {date} ({day}) - Start: {start}, Sunrise: {sunrise}"
)
if len(upcoming) > 5:
print(f" ... and {len(upcoming) - 5} more events")
print()
print("=" * 60)
if __name__ == "__main__":
main()Get the next Ekadashi fasting day and a full year calendar of upcoming Ekadashi dates for a specified city. Returns the nearest fasting date, start time, end window, and a list of all upcoming Ekadashi days with detailed timing information.
| Param | Type | Description |
|---|---|---|
| cityrequired | string | City name in Russian (e.g. алматы, москва, санкт-петербург). Must match a city available on the site's Ekadashi calendar. |
{
"type": "object",
"fields": {
"city": "string",
"raw_info": "string — full text of the nearest Ekadashi info",
"day_of_week": "string — day of the week in Russian",
"ekadashi_date": "string — date of the next Ekadashi (e.g. 11 июня 2026)",
"fast_end_date": "string — date when fasting ends",
"fast_start_time": "string — time fasting begins (HH:MM)",
"upcoming_ekadashi": "array of objects with date, day_of_week, fast_start_time, fast_end_info, tithi_start, sunrise",
"fast_end_window_end": "string — latest time to break the fast (HH:MM)",
"fast_end_window_start": "string — earliest time to break the fast (HH:MM)"
},
"sample": {
"city": "алматы",
"raw_info": "Ближайший день поста экадаши для Алматы: 11 июня 2026, четверг. Начало поста: 3:37. Выход из поста: 12 июня 2026, в период с 5:13 до 7:43.",
"day_of_week": "четверг",
"ekadashi_date": "11 июня 2026",
"fast_end_date": "12 июня 2026",
"fast_start_time": "3:37",
"upcoming_ekadashi": [
{
"date": "11.06.2026",
"sunrise": "05:13",
"day_of_week": "Четверг",
"tithi_start": "10:27(Двадаши)",
"fast_end_info": "05:13—07:43,12.06.2026",
"fast_start_time": "03:37"
}
],
"fast_end_window_end": "7:43",
"fast_end_window_start": "5:13"
}
}About the voshod-solnca API
What the API Returns
The get_next_ekadashi endpoint accepts a single required parameter — city — as a Russian-language city name (e.g. алматы, москва, санкт-петербург). It returns the next Ekadashi fasting date in the ekadashi_date field (e.g. 11 июня 2026), the day of the week in Russian via day_of_week, and a raw_info string containing the full original text of the nearest Ekadashi description as it appears on the source page.
Fasting Window Fields
For the immediate next Ekadashi, the response includes fast_start_time (when fasting begins, HH:MM format), fast_end_window_start and fast_end_window_end (the earliest and latest acceptable times to break the fast), and fast_end_date (the calendar date on which fasting ends). This gives enough detail to build reminders or schedule integrations around the full fasting period, not just the single date.
Upcoming Ekadashi Calendar
The upcoming_ekadashi array lists future Ekadashi dates beyond the immediate next one. Each object in the array includes date, day_of_week, fast_start_time, fast_end_info, tithi_start, and sunrise. The tithi_start and sunrise fields provide lunar and solar timing context specific to the selected city, which matters because these times vary by geographic location.
City Coverage and Input Format
City names must be supplied in Russian and must match a city available on voshod-solnca.ru's Ekadashi pages. The site covers cities across Russia, Kazakhstan, and neighboring regions. Passing a city name that doesn't match an available entry will not return valid data, so confirm the spelling against the site's city list before integrating.
The voshod-solnca API is a managed, monitored endpoint for voshod-solnca.ru — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when voshod-solnca.ru 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 voshod-solnca.ru 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?+
- Display the next Ekadashi date and fasting window in a Hindu calendar or devotional mobile app.
- Send push notifications using
fast_start_timeandfast_end_window_startto remind users when to begin and break their fast. - Populate a year-ahead fasting calendar using the
upcoming_ekadashiarray with per-entrysunriseandtithi_startdata. - Build a city-aware fasting scheduler that adjusts times based on the
cityparameter for users in different locations. - Feed Ekadashi dates and day-of-week info into a general Hindu religious events aggregator alongside other observances.
- Generate ICS calendar files from the
upcoming_ekadashilist so users can subscribe to fasting reminders in any calendar app.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does voshod-solnca.ru have an official developer API?+
What does the `upcoming_ekadashi` array contain, and how many entries does it typically include?+
upcoming_ekadashi contains date, day_of_week, fast_start_time, fast_end_info, tithi_start, and sunrise. The array covers the full remaining Ekadashi dates for the current calendar year as listed on the source page for the requested city. The exact count depends on how many dates remain in the year at the time of the request.Does the fasting window differ between cities?+
fast_start_time, fast_end_window_start, fast_end_window_end, and sunrise values in both the top-level response and each upcoming_ekadashi entry are specific to the city passed in the city parameter. voshod-solnca.ru calculates these times based on local solar and lunar positions, so querying москва and алматы for the same Ekadashi will return different times.Does the API cover Ekadashi data for cities outside Russia and Kazakhstan?+
Can I retrieve historical Ekadashi dates or only upcoming ones?+
get_next_ekadashi endpoint returns the next Ekadashi date and the upcoming calendar list, not historical records. Past Ekadashi dates are not exposed. You can fork this API on Parse and revise it to add an endpoint that targets archive or past-year pages if the source makes them available.