{
  "openapi": "3.0.1",
  "info": {
    "title": "Astrology API: Natal Chart, Kundli & Horoscope Matching",
    "description": "Astrology API for apps and sites: natal birth charts, transits, synastry, Vedic kundli, dasha, horoscope (kundli) matching, BaZi and Korean Saju (사주) as JSON, with chart wheel images. NASA JPL-checked accuracy, 171,000 cities built in. USD 1.50 per 1,000 results, no subscription.",
    "version": "1.0",
    "x-build-id": "CJfwnl9GBRc5ppaDS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/usefulapi~astrology-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-usefulapi-astrology-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/usefulapi~astrology-api/runs": {
      "post": {
        "operationId": "runs-sync-usefulapi-astrology-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/usefulapi~astrology-api/run-sync": {
      "post": {
        "operationId": "run-sync-usefulapi-astrology-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "calculation": {
            "title": "Calculation",
            "enum": [
              "none",
              "natal",
              "synastry",
              "composite",
              "davison",
              "transits",
              "solar_return",
              "lunar_return",
              "planet_return",
              "positions",
              "ephemeris",
              "moon_phase",
              "lunations",
              "void_of_course",
              "retrogrades",
              "ingresses",
              "planetary_hours",
              "vedic",
              "dasha",
              "kundli_matching",
              "manglik",
              "sade_sati",
              "bazi",
              "saju",
              "astrocartography",
              "places"
            ],
            "type": "string",
            "description": "One calculation for every person in People (two-person charts use pairs; sky calculations such as Moon phase need no person). Choose None if you only use Requests below, otherwise this example runs too."
          },
          "people": {
            "title": "People",
            "type": "array",
            "description": "Birth data, one object per person: date (YYYY-MM-DD, 1900-2100), time (HH:MM, 24-hour; leave out if unknown), and the place as city (\"Paris, FR\", \"Houston, TX\") or latitude + longitude + timezone (IANA name such as \"America/New_York\") or utcOffset (\"+05:30\"). Optional: name or id (copied to the result), sex (\"male\" or \"female\", for the Saju luck pillars), calendar (\"lunar\" for a Korean lunar birthday, with leapMonth true for a leap month), ambiguousTime (\"earlier\" or \"later\", for a local time that happened twice when clocks went back)."
          },
          "pairing": {
            "title": "Pairing (two-person charts)",
            "enum": [
              "consecutive",
              "firstWithEach",
              "allPairs"
            ],
            "type": "string",
            "description": "How People are paired for synastry, composite, Davison and kundli matching (for kundli matching the first of each pair is the boy, the second the girl).",
            "default": "consecutive"
          },
          "options": {
            "title": "Options",
            "type": "object",
            "description": "Settings for the calculation, for example { \"houseSystem\": \"whole\" }. Common: houseSystem (placidus, koch, equal, whole), svg (true adds a chart wheel image; svgTheme light or dark), orbs ({ \"conjunction\": 6 }, 0 turns a type off). By type: transits at ({ \"date\": \"2026-10-16\", \"time\": \"12:00\", \"timezone\": \"Europe/Paris\" } or { \"datetime\": \"2026-10-16T10:00:00Z\" }; default now), orb (number or \"natal\"); solar_return year, returnPlace; lunar_return from, count (1-13); planet_return body (saturn, jupiter, chiron...); saju timeRule (korean, local_mean_time, true_solar_time, clock) and dayChange (rat_hour, midnight_late_rat, midnight); date-range types from, to (YYYY-MM-DD), timezone, bodies; vedic nodeType (true, mean), includeOuterPlanets; dasha yearLength (julian, sidereal, savana), levels (1-3); bazi trueSolarTime, dayStartsAt23; astrocartography lineMode (mundo, zodiac), near ({ \"city\": \"Tokyo\" }). Full list in the README."
          },
          "requests": {
            "title": "Requests (advanced)",
            "type": "array",
            "description": "A list of calculations, each an object with a type and its own settings, for example [{ \"type\": \"natal\", \"person\": { \"date\": \"1990-07-14\", \"time\": \"08:30\", \"city\": \"Paris, FR\" } }, { \"type\": \"moon_phase\" }]. Two-person types take person and partner. Add id to any request to find it in the results. Runs together with the calculation above unless Calculation is None. Up to 10,000 calculations per run."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}