Use case
Astrology app development on one API
Updated
How it works
- 1A user opens an astrology app and sees a screen made just for them.
- 2Behind it, the app asks the API for the birth chart, today's reading and the life period running now.
- 3The API sends back the answers as data, and the app draws its own screens around them.
POST /v1/reading/section/topic:personality?as_of=2026-10-01200 OK{
"section": {
"id": "topic:personality"
},
"blocks": [
{
"answer": {
"headline": "You tend to have a clear sense of who you are, and people often notice it. Energy and confidence usually come easily to you, and you bounce back well when life gets hard."
}
}
]
}How to build an astrology app on the API
Each step is one call, linked to its page in the API reference. Where a card shows values, they are real API output. Planet positions come from NASA JPL planet data (DE440). We check them against NASA JPL Horizons. On 25,571 positions from 1850 to 2149, the Sun and planets agree within 0.001 arc seconds. The Moon agrees within 0.011. An arc second is 1/3,600 of a degree. See how we test accuracy. A practicing astrologer reviews the rules behind these answers. Each rule has an ID in the public rulebook.
- 01
Show the birth chart at sign-up
POST /v1/planetsAsk for the birth date, the local time, the place and its time zone. The first call returns the rising sign and all nine planets for the chart screen.
- ascendant.sign
- "Virgo"
- positions.1.name
- "Moon"
- positions.1.sign
- "Taurus"
- positions.1.nakshatra
- "Mrigashira"
Real output from the example in the API reference.
- 02
Divisional charts
POST /v1/chart/{division}A second chart tab, such as the navamsa (D9), the chart read for marriage. Any of the 16 divisional charts comes from the birth details you already have.
- varga
- "D9"
- signifies
- "the spouse, and the inner strength of every graha"
- ascendant.sign
- "Gemini"
Real output from the example in the API reference.
- 03
A timeline
POST /v1/dasha/vimshottariThe running planetary period and every date, for a timeline or a "your current period" card.
- starting_lord
- "Mars"
- periods.0.end
- "1996-12-20T07:27:09.380502"
- periods.1.lord
- "Rahu"
Real output from the example in the API reference.
- 04
A daily screen
POST /v1/reading/dailyOne day for one user, led by the Moon, with the day's panchang (the Hindu calendar for the day).
- panchang.tithi.name
- "Shashthi"
- moon.title
- "The Moon in the 1st from your own"
- moon.result
- "favorable"
Real output from the example in the API reference.
- 05
Readings
POST /v1/reading/section/{section_id}Topic readings such as career or marriage, each opening with a plain answer.
- section.id
- "topic:personality"
- blocks.0.answer.headline
- "You tend to have a clear sense of who you are, and people often notice it. Energy and confidence usually come easily to you, and you bounce back well when life gets hard."
Real output for John Doe, born Aug 15, 1990, 10:30 AM, New York.
- 06
A question screen
POST /v1/prashnaThe user picks one topic from GET /v1/prashna/topics, such as marriage or a new job. The answer is read from the moment they ask, so no birth details are needed.
- topic
- "marriage"
- answer.verdict
- "possible_with_effort"
- answer.timing.count
- 6
- answer.timing.unit
- "days"
Real output from the example in the API reference.
- 07
What you send, what you get, what it costs
| You send | Each user's birth date, local time, place and time zone. Daily readings also take the date you show. |
|---|---|
| You get | The birth chart, any of the 16 divisional charts, dasha dates, a daily reading, topic readings and a printable report. |
| It costs | Steps 1, 2, 3 and 4: 1 call each.Step 5: 1 reading credit a chapter (3 for the year ahead).Step 6: 5 reading credits.Step 7: 25 reading credits (40 with the topic chapters). |
Costs are for a live key, and failed requests are free. The Free plan includes 2,000 calls and 150 reading credits a month.
Step 1 in code: show the birth chart at sign-up
Send the details as JSON, with your API key in the Authorization header. The other steps work the same way, and each one links to its page in the API reference.
POST /v1/planets
# John Doe, born Aug 15, 1990, 10:30 AM, New York
curl -X POST "https://apiforastrology.com/api/astrology/v1/planets" \
-H "Authorization: Bearer $ASTROLOGY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"year":1990,"month":8,"day":15,"hour":10,"minute":30,"second":0,"latitude":40.7128,"longitude":-74.006,"timezone":"America/New_York"}'{
"meta": {
"ayanamsa": "lahiri",
"ayanamsa_value": 23.7260727,
"julian_day": 2448119.10483,
"ephemeris": "JPL DE440s",
"node": "true",
"timezone": {
"source": "zone",
"offset_hours": -4,
"zone": "America/New_York",
"abbreviation": "EDT",
"dst": true,
"dst_hours": 1,
"ambiguous_resolved_by_fold": null,
"note": "read from the IANA tz database at this instant, so daylight saving and historical offset changes are included"
}
},
"ascendant": {
"name": "Ascendant",
"longitude": 169.934155,
"sign": "Virgo",
"sign_number": 6,
"degree_in_sign": 19.934155,
"degree_dms": "19 : 56 : 03",
"house": 1,
"nakshatra": "Hast",
"nakshatra_lord": "Moon",
"pada": 3,
"speed": 0,
"retrograde": false,
"combust": false,
"dignity": "n/a",
"vargottama": false,
"pushkara": {
"navamsa": false,
"navamsa_number": 6,
"bhaga": false,
"bhaga_degree": 9,
"bhaga_by_element": false,
"bhaga_degree_by_element": 14,
"sources_agree": true,
"orb_degrees": 1
}
},
"positions": [
{
"name": "Sun",
"longitude": 118.7753409,
"sign": "Cancer",
"sign_number": 4,
"degree_in_sign": 28.7753409,
"degree_dms": "28 : 46 : 31",
"house": 11,
"nakshatra": "Ashlesha",
"nakshatra_lord": "Mercury",
"pada": 4,
"speed": 0.9610665,
"retrograde": false,
"combust": false,
"dignity": "friend",
"vargottama": false,
"pushkara": {
"navamsa": false,
"navamsa_number": 9,
"bhaga": false,
"bhaga_degree": 8,
"bhaga_by_element": false,
"bhaga_degree_by_element": 7,
"sources_agree": true,
"orb_degrees": 1
}
},
{
"name": "Moon",
"longitude": 54.5750352,
"sign": "Taurus",
"sign_number": 2,
"degree_in_sign": 24.5750352,
"degree_dms": "24 : 34 : 30",
"house": 9,
"nakshatra": "Mrigashira",
"nakshatra_lord": "Mars",
"pada": 1,
"speed": 14.258194,
"retrograde": false,
"combust": false,
"dignity": "mulatrikona",
"vargottama": false,
"pushkara": {
"navamsa": false,
"navamsa_number": 8,
"bhaga": false,
"bhaga_degree": 14,
"bhaga_by_element": false,
"bhaga_degree_by_element": 14,
"sources_agree": true,
"orb_degrees": 1
}
},
{
"name": "Mars",
"longitude": 27.7149328,
"sign": "Aries",
"sign_number": 1,
"degree_in_sign": 27.7149328,
"degree_dms": "27 : 42 : 54",
"house": 8,
"nakshatra": "Krittika",
"nakshatra_lord": "Sun",
"pada": 1,
"speed": 0.5753266,
"retrograde": false,
"combust": false,
"dignity": "own sign",
"vargottama": false,
"pushkara": {
"navamsa": true,
"navamsa_number": 9,
"bhaga": false,
"bhaga_degree": 21,
"bhaga_by_element": false,
"bhaga_degree_by_element": 21,
"sources_agree": true,
"orb_degrees": 1
}
}
],
"planetary_war": []
}What to build, and what to get from the API
Your team builds
- Your app's screens, sign-up and accounts
- Payments and subscriptions
- Reminders and push notifications
- Your brand, your voice and your design
The API gives you
- Planet positions and the 16 divisional charts
- Dasha (planetary period) dates, transits and the panchang
- Kundli matching and dosha (chart flaw) checks
- Readings and a printable report, in plain English
Tips for going live
- Make every call from your backend. A key shipped inside a mobile app can be pulled out of it.
- Daily readings and transits change with the date, so ask for the date you show.
- The API refuses a local time that happens twice when the clocks go back. Ask the user which one they mean, and send it as timezone_fold.
- The monthly quota covers your whole account, so limit how often each user can start new calls.

What it costs
A horoscope app showing the 12 daily sign horoscopes uses 360 calls a month. Free or Starter with a link to us, or Growth without one.
Every plan can call every endpoint: calls for calculations, reading credits for written readings. Test keys are free on every plan, with 1,000 calls a month. Paid plans start at $29 a month, and failed requests are free.
See pricingTry it free
See an answer first
Free kundli
Your Vedic birth chart: the rising sign and all nine planets, with sign, house and nakshatra.
Make my kundli
Features used here
- Kundli and birth chartsPlanets, rising sign and D1 to D60 charts
- Dashas (planetary periods)Vimshottari, Yogini and Ashtottari dates
- Panchang and muhuratTithi, nakshatra, rahu kaal and good times
- Kundli matchingGuna milan, manglik check and a verdict
- Transits and forecastsGochar, sign changes and retrograde dates
- Daily horoscopesMoon-sign horoscopes, daily and weekly readings
- Yogas and doshasManglik, kaal sarp and pitra dosha checks
- Planetary strengthShadbala and ashtakavarga
- Jaimini astrologyChara karakas, arudha and chara dasha
- Readings and reportsTopic readings and a printable kundli report
- RemediesGemstones, rudraksha and mantras
- Karmic readingRahu and Ketu, with no past-life claims
- Prashna (horary)One question, read from the moment asked
Read next
From the blog
Common questions
All questionsHow do we show daily horoscopes for all 12 signs?
Call GET /v1/rashi/{sign}/today once for each Moon sign, which is 12 calls a day for one city. These are Moon-sign horoscopes, and POST /v1/planets finds a user's Moon sign from their birth details.
About the horoscope APIWhat can we use for daily push notifications?
The API does not send notifications, so your app does that part. For the content, use POST /v1/reading/daily for each user's day. Use GET /v1/sky/events for planet sign changes and retrogrades (when a planet seems to move backward). For fasting days and festivals in the user's city, use GET /v1/vrats or GET /v1/festivals.
About the transit APICan we sell a full report inside our app?
Yes. POST /v1/report returns the whole reading as one printable HTML page with no outside files. Users can save it as a PDF from any browser. You set its heading with the title parameter, and each report uses reading credits, not calls.
See a sample reportWhat can the app show users who do not know their birth time?
A full chart needs the birth time, because the rising sign and the houses depend on it. Without it, users can still get the Moon-sign horoscope if they know their Moon sign. Tara bala (a daily rating) works from their birth nakshatra, and matching from two nakshatras. The daily panchang needs only their city.
What a Moon sign isCan users ask the app one question, such as about marriage or a new job?
Yes, with a question chart (prashna, or horary). Show the topics from GET /v1/prashna/topics, and send the user's pick to POST /v1/prashna. No birth details are needed. The answer gives a plain verdict, up to three reasons and an estimate of timing. Each answer uses 5 reading credits. The API stores nothing, so your app limits each person to one question per topic in 72 hours.
See the question chart endpointsCan we show the readings under our own brand?
Yes. You may show API output to your users in your app with no credit to us. The report page has no logo or brand name of ours. The one exception: on the Free and Starter plans, a public page that publishes the daily sign horoscopes must link to us.
What you may do with API outputWhich languages can an astrology app show readings in?
Readings come in English and Hindi. Send lang=hi for Hindi with a reading call. Names such as signs and nakshatras (birth stars) come in that language too. Where a passage has no version yet, the English one comes back, marked with fell_back_to_en, so your app can catch it.
Read the conventionsAstrology API
Start with a free test key
Create an account and a test key, then try each step above. Need more than the largest plan? Write to us.
Your first answer
John Doe, New York
- RisingVirgoHast
- SunCancerAshlesha
- MoonTaurusMrigashira
- MarsAriesKrittika
Real API output. A free test key gets the same answer.
01
Test key: 1,000 test calls a month to build with
02
Free plan: 2,000 live calls a month, no card needed
03
Open rules: every rule is published, so you can check any answer

