Astrology Transits API

Current transits with natal chart comparison

POST/astrology/transits

Calculate current or future planetary transits (positions of all bodies now). Optionally compare transits to natal chart to find transit-to-natal aspects. Returns all 14 celestial bodies (the 10 classical planets, the lunar nodes, Chiron, and Black Moon Lilith) with signs, degrees, and speeds. When natal chart provided, includes transit aspects (transiting Sun conjunct natal Mars, etc.) with orbs and applying/separating status. Perfect for daily transit forecasts, aspect alerts, and personalized transit reports.

Location first, chart second

The Astrology Transits API needs latitude, longitude, and timezone. Never ask users to type coordinates. Resolve a city with the Location endpoint first, then feed the result into the request. Timezone accepts a decimal offset or an IANA name.

1 Resolve the location

GET
curl "https://roxyapi.com/api/v2/location/search?q=New York" \
  -H "X-API-Key: YOUR_KEY"
# -> cities[0]: { latitude, longitude, timezone: "America/New_York" }

2 Call the Astrology Transits endpoint

POST /astrology/transits
# feed latitude, longitude and timezone from step 1
POST https://roxyapi.com/api/v2/astrology/transits

Request

POST /api/v2/astrology/transits

Parameters

ParameterTypeDescription
langquerystring enumResponse language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English. Default en.

Request body

FieldTypeDescription
datestring (date)Transit date in YYYY-MM-DD format (defaults to current date)
timestring (time)Transit time in HH:MM:SS format (defaults to current time)
timezonenumber or stringTransit timezone: decimal hours from UTC OR IANA name (e.g. "America/New_York"). IANA resolved to the DST-correct offset for the transit date. Defaults to 0 (UTC).
nodeTypestring enumLunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is what most Western software reports (Astrolabe, Cafe Astrology, TimePassages), which is why it is the default here; astro-seek and the Steven Forrest evolutionary school use mean, so pass "mean" to match those. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true".
natalChartobjectOptional natal chart data to compare transits against
natalChart.date*string (date)Date in YYYY-MM-DD format. A single-digit month or day is accepted and zero-padded (2026-3-5 becomes 2026-03-05). Impossible calendar dates are rejected.
natalChart.time*string (time)Time in 24-hour format. Seconds are optional and default to 00 (14:30 becomes 14:30:00); a single-digit hour is zero-padded. Out-of-range values are rejected.
natalChart.latitude*numberNatal birth latitude in decimal degrees, positive north. Sets the local sidereal time behind the natal Ascendant and house cusps that the transits are measured against.
natalChart.longitude*numberNatal birth longitude in decimal degrees, positive east and negative west. Example: New York -74.0060, London -0.1276, Sydney 151.2093.
natalChart.timezone*number or stringNatal timezone: decimal hours OR IANA name (e.g. "America/New_York"). IANA resolved to the DST-correct offset for the natal date.

Example request

POST /astrology/transits
{
  "date": "2025-12-19",
  "time": "12:00:00",
  "timezone": 0,
  "nodeType": "true",
  "natalChart": {
    "date": "1990-07-15",
    "time": "14:30:00",
    "latitude": 40.7128,
    "longitude": -74.006,
    "timezone": -5
  }
}

Response

Structured JSON with documented fields, covered by 6,991 automated tests per deploy, 1,527 of them gold-standard tests verified against NASA JPL Horizons. Not hallucinated text.

200 OK
{
  "transitDate": "2025-12-19",
  "transitTime": "12:00:00",
  "timezone": 0,
  "transitPlanets": [
    {
      "name": "Sun",
      "longitude": 267.45,
      "latitude": 0.01,
      "sign": "Sagittarius",
      "degree": 27.45,
      "speed": 0.9571,
      "isRetrograde": false
    }
  ]
}

Response fields

FieldTypeDescription
transitDate*stringDate of the transit calculation (YYYY-MM-DD).
transitTime*stringTime of the transit calculation (HH:MM:SS, 24-hour).
timezone*numberTimezone offset from UTC in hours used for this calculation.
transitPlanets*array of objectCurrent positions of all 14 celestial bodies (10 classical planets, lunar nodes, Chiron, Black Moon Lilith) in the tropical zodiac. Use for daily transit tracking, horoscope generation, and aspect monitoring.
transitPlanets[].name*stringPlanet name (Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, North Node, South Node, Chiron, Black Moon Lilith). Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use nameLocalized for anything a reader sees. The lunar nodes are the mean node; software using the true node may show node positions up to 1.75 degrees different.
transitPlanets[].nameLocalizedstringPlanet name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it.
transitPlanets[].longitude*numberTropical ecliptic longitude in degrees (0-360). Primary coordinate for sign and aspect calculation.
transitPlanets[].latitude*numberEcliptic latitude in degrees. Near zero for most planets except Moon and Pluto.
transitPlanets[].sign*stringTropical zodiac sign the planet currently occupies. Changes when longitude crosses a 30-degree boundary. Always English, whatever the lang parameter says. Use signLocalized for anything a reader sees.
transitPlanets[].signLocalizedstringZodiac sign name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it.
transitPlanets[].degree*numberDegree within the current zodiac sign (0-29.999). Indicates how far into the sign the planet has progressed.
transitPlanets[].speed*numberDaily motion in degrees per day. Negative values indicate retrograde motion.
transitPlanets[].isRetrograde*booleanWhether the planet is currently in apparent retrograde motion. Retrograde transits are considered more introspective and revisionary.
transitAspectsarray of objectTransit-to-natal aspects (only included when natalChart is provided in the request). Shows which transiting planets are aspecting natal planets.
Show all fields
FieldTypeDescription
transitAspects[].transitPlanet*stringTransiting planet forming the aspect. Always English, whatever the lang parameter says. Use transitPlanetLocalized for anything a reader sees.
transitAspects[].transitPlanetLocalizedstringTransiting planet name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it.
transitAspects[].natalPlanet*stringNatal planet being aspected. Always English, whatever the lang parameter says. Use natalPlanetLocalized for anything a reader sees.
transitAspects[].natalPlanetLocalizedstringNatal planet name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it.
transitAspects[].type*stringAspect type (CONJUNCTION, OPPOSITION, TRINE, SQUARE, SEXTILE, etc.). Always English, whatever the lang parameter says. Use typeLocalized for anything a reader sees.
transitAspects[].typeLocalizedstringAspect type name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it.
transitAspects[].angle*numberExact angle of this aspect type in degrees.
transitAspects[].orb*numberDistance from exact aspect in degrees. Tighter orb = stronger influence.
transitAspects[].isApplying*booleanWhether the transiting planet is moving toward exactitude (applying) or away from it (separating). Applying aspects grow stronger.
transitAspects[].strength*numberAspect strength percentage (0-100) based on orb tightness, where 100 is exact.
transitAspects[].nature*stringAspect nature: harmonious (trine, sextile), challenging (square, opposition), or neutral (conjunction).
transitAspects[].interpretation*objectRich interpretation of the transit aspect including narrative summary, timing, impact assessment, practical guidance, and keywords.
transitAspects[].interpretation.summary*stringNarrative interpretation of what this transit aspect means and how it manifests.
transitAspects[].interpretation.timing*stringHow long this transit influence lasts, localized. The bucket follows the speed of the transiting body: a few hours for the Moon, a few days for the Sun, Mercury, Venus and Mars, one to two weeks for Jupiter, several weeks for Saturn, and an extended period for Uranus, Neptune and Pluto.
transitAspects[].interpretation.impact*stringStrength and nature of the transit impact on your natal chart.
transitAspects[].interpretation.guidance*stringPractical advice for working with or navigating this transit energy.
transitAspects[].interpretation.keywords*array of stringKey themes activated by this transit aspect.
summaryobjectTransit aspect summary counts (only included when natalChart is provided). Quick overview of the current transit weather.
summary.totalAspects*numberTotal transit-to-natal aspects found.
summary.harmonious*numberCount of harmonious aspects (trine, sextile).
summary.challenging*numberCount of challenging aspects (square, opposition).
summary.neutral*numberCount of neutral aspects (conjunction).

Supported options

lang

entrdeeshiptfrru

nodeType

meantrue

Call it in your language in seconds.

Every snippet is generated from the live OpenAPI spec, so method names, parameters, and fields always match production.

TypeScript
import { createRoxy } from '@roxyapi/sdk'

const roxy = createRoxy(process.env.ROXY_API_KEY!)
const { data } = await roxy.astrology.calculateTransits({ body: { date: '2025-12-19', time: '12:00:00', timezone: 0, nodeType: 'true' } })
Install: npm install @roxyapi/sdk

Prefer to try before you write code? Run this Western Astrology endpoint live in the API playground and inspect a real production response.

Remote MCP for AI agents

Every Western Astrology endpoint is a callable tool on the Remote MCP server over Streamable HTTP. No local setup, no Docker. Claude, ChatGPT, Cursor, and any MCP client auto-discover the tools and ground their answers in verified data.

Claude Code / Cursor
claude mcp add --transport http \
  roxy-astrology https://roxyapi.com/mcp/astrology \
  --header "X-API-Key: YOUR_KEY"

Tool name for POST /astrology/transits: post_astrology_transits. Full MCP setup guide

What you can build

Launch natal chart apps with professional-grade accuracy: birth charts, planet positions, house placements, aspects, and element analysis ready for your UI in days

Add zodiac compatibility scoring to dating apps: synastry analysis, composite charts, and compatibility scores with detailed relationship dynamics

Ship personalized horoscope platforms: publisher-grade daily, weekly, and monthly forecasts with unique content per sign, active transit metadata, Moon phase data, and date scheduling for editorial pre-publishing

Build AI astrology chatbots with MCP: your OpenAI, Claude, or Gemini agent auto-discovers and calls every astrology endpoint with zero integration code

Power wellness and lifestyle apps with real-time transits, moon phase calendars, solar returns, and planetary movement alerts for self-discovery features

Create astrology content engines: automated zodiac content with house-based uniqueness per sign, horoscope newsletters with real lunar event dates, transit alerts, and seasonal forecasts at scale

Drop-in UI components & widgets

Render Astrology Transits API responses without building charts yourself. Install the npm package and drop these into Next.js, React, Vue, Svelte, Angular, or plain HTML, or embed the very same component on Squarespace, Wix, or WordPress by pasting one snippet, with no backend and no build step. They belong to one library that covers the entire spiritual stack rather than astrology alone, MIT licensed and included in every plan at no extra cost, never a separate product and never an upsell. The Astrology Transits API calculations, the interface that renders them, and the Remote MCP your agent calls, all behind one key, end to end.

MIT licensedFramework agnosticThemeable via CSS variablesnpm or CDN
Show all Astrology Transits UI components
ElementRenders
<roxy-transits-table>Transit planet positions plus optional aspects to a natal chart

Related capabilities

Astrology Transits API FAQ

What does the Astrology Transits API return?

Calculate current or future planetary transits (positions of all bodies now). Every response is structured JSON with documented fields, not free text, so you map it straight into your product.

How do I authenticate with the Astrology Transits API?

Pass your key in the X-API-Key header on every request. Keys are delivered instantly at checkout with no approval queue. Use a secret sk key server side, or mint a publishable pk key locked to your origins for browser and no-code use.

Does the Astrology Transits API support multiple languages?

Yes. Append the lang query parameter to any endpoint for responses in English, German, Spanish, French, Hindi, Portuguese, Russian and Turkish. The translated payload includes the full interpretation text, not just field labels.

Do I need coordinates to call the Astrology Transits API?

No. Call GET /location/search with a city name first, then pass latitude, longitude, and timezone from the first result into the request. Never ask users to type coordinates. Timezone accepts a decimal offset or an IANA name.

Is the Astrology Transits API available over Remote MCP for AI agents?

Yes. Every endpoint is exposed as a callable tool on the Remote MCP server at https://roxyapi.com/mcp/astrology over Streamable HTTP, so Claude, ChatGPT, Cursor, and any MCP client auto-discover it with no local setup or Docker.

How is the Astrology Transits API billed?

Flat pricing: 1 request equals 1 quota unit, REST and MCP identical, with no credit weighting or per-token markup. Every plan includes all 12 domains, so the Astrology Transits API is included at no extra cost.

What lang values does the Astrology Transits API accept?

The lang parameter accepts en, tr, de, es, hi, pt, fr, ru. Case-insensitive where it is a path value.

Start using Astrology Transits API today.

Ship your astrology app this weekend. Not this quarter.

All 12 domains included with every plan. Every endpoint, MCP server, SDK, and starters.

Plans from $39/mo, starting at $2.70 per domain on annual billing. No credit card required for testing.

View Pricing & Get API Key