πŸš€ PUBLIC BETA NOW OPEN

Find the Perfect Lunar Landing Site in Seconds

Query 1.18M pre-analyzed sites across the lunar south pole (-90Β° to -83.5Β° latitude). Turn weeks of manual GIS analysis into a single API call.

1.18M Analyzed Sites
60+ Features per Site
<100ms Query Response

Join the Beta Program

Get free API access and help shape the future of lunar mission planning

βœ“ Success! Thank you for signing up. We'll send your API key and onboarding instructions to your email within 24 hours.

Why Use Our API?

Built by mission planners, for mission planners

πŸ“Š

Comprehensive Data

1.18M sites with 60+ features each. Terrain metrics from NASA LOLA (5m resolution) and illumination data from LROC.

🧠

Smart Recommendations

Smart site scoring with plain English reasoning. Know exactly why each site is recommended for your mission.

⚑

Lightning Fast

Sub-100ms queries with PostGIS spatial indexing. Get results instantly instead of waiting hours for GIS analysis.

πŸ—ΊοΈ

Export Anywhere

GeoJSON for QGIS/ArcGIS, KML for Google Earth, CSV for Excel. Integrate with your existing workflows.

🎯

Mission-Specific

Optimized scoring for Artemis human landing, robotic landers, rover traverses, and custom mission profiles.

πŸ”¬

Research-Grade

99.98% data completeness with professional curation. Built on authoritative NASA datasets.

Use Cases

πŸš€ Mission Planning

Rapidly evaluate thousands of candidate sites for Artemis or commercial lunar missions. Get mission-specific recommendations in seconds.

πŸŽ“ Academic Research

Access processed NASA datasets for lunar geology, terrain analysis, or illumination studies. Free academic tier available.

πŸ—ΊοΈ GIS Analysis

Export pre-analyzed data directly to QGIS or ArcGIS. Skip the manual raster processing and focus on insights.

πŸ€– Rover Path Planning

Find accessible terrain for rover traverses. Evaluate slope, roughness, and illumination along potential routes.

Simple, Powerful API

Get started in 30 seconds with any programming language

# Find the 5 safest landing sites near lunar south pole
import requests

response = requests.get(
    "https://lunarlandingsiteapi.up.railway.app/api/v1/recommendations",
    headers={"X-API-Key": "your_key_here"},
    params={
        "lat": -89.5,
        "lon": 45,
        "mission_type": "artemis",
        "top_n": 5
    }
)

# Get plain English reasoning for top site
top_site = response.json()["recommendations"][0]
print(top_site["reasoning"])

# Output: "Exceptional safety (hazard 0.92) with excellent visibility (95.2%)..."

πŸ“– Getting Started Guide

Everything you need to start using the API in 5 minutes

πŸš€ Quick Start

  1. Sign up using the form above for free beta access
  2. Check your email for your API key (starts with ldp_live_...)
  3. Make your first request using the code examples below

πŸ” Authentication

Most endpoints require an API key in the X-API-Key header:

curl -H "X-API-Key: ldp_live_YOUR_KEY_HERE" \
  "https://lunarlandingsiteapi.up.railway.app/api/v1/recommendations?lat=-89.5&lon=45"

Public Endpoints (No Auth Required)

  • GET /health - API health check
  • GET /docs - Interactive documentation

Protected Endpoints (Auth Required)

  • GET /api/v1/recommendations - Get site recommendations
  • GET /api/v1/sites/search - Search for sites
  • POST /api/v1/sites/batch - Batch site lookup
  • POST /api/v1/compare - Compare multiple sites

πŸ“Š Rate Limits & Usage

Tier Daily Limit Status
Beta 100 requests/day Free during beta
Premium Coming soon Coming soon
Monitor Your Usage: Every API response includes your usage stats:
{
  "user": {
    "email": "you@example.com",
    "tier": "beta",
    "requests_today": 45,
    "requests_remaining": 55
  }
}

πŸ’» Code Examples

Python

import requests

API_KEY = "ldp_live_YOUR_KEY_HERE"
headers = {"X-API-Key": API_KEY}

response = requests.get(
    "https://lunarlandingsiteapi.up.railway.app/api/v1/recommendations",
    headers=headers,
    params={"lat": -89.5, "lon": 45, "mission_type": "artemis", "top_n": 10}
)

data = response.json()
print(f"Requests remaining: {data['user']['requests_remaining']}")

JavaScript

const API_KEY = "ldp_live_YOUR_KEY_HERE";

const response = await fetch(
  'https://lunarlandingsiteapi.up.railway.app/api/v1/recommendations?lat=-89.5&lon=45',
  { headers: { 'X-API-Key': API_KEY } }
);

const data = await response.json();
console.log(`Requests remaining: ${data.user.requests_remaining}`);

curl

curl -H "X-API-Key: ldp_live_YOUR_KEY_HERE" \
  "https://lunarlandingsiteapi.up.railway.app/api/v1/recommendations?lat=-89.5&lon=45&mission_type=artemis&top_n=10"

⚠️ Error Handling

Status Code Error Solution
401 Missing API key Add X-API-Key header
403 Invalid API key Check your key in welcome email
429 Rate limit exceeded Wait until tomorrow or upgrade
422 Invalid parameters Check parameter format

Best Practice: Handle Errors Gracefully

try:
    response = requests.get(url, headers=headers, params=params)
    response.raise_for_status()
    data = response.json()
except requests.exceptions.HTTPError as e:
    if e.response.status_code == 401:
        print("Missing API key!")
    elif e.response.status_code == 403:
        print("Invalid API key!")
    elif e.response.status_code == 429:
        print("Rate limit exceeded")

πŸ”‘ API Key Management

Where to find your API key: Check the welcome email sent after signup. Subject: "Welcome to Lunar Landing Site API"
Security Best Practices:
  • ⚠️ Never share your API key publicly (GitHub, forums, etc.)
  • ⚠️ Never commit keys to version control
  • βœ… Use environment variables: API_KEY = os.getenv("LUNAR_API_KEY")
  • βœ… Rotate keys if accidentally exposed

πŸ“š Additional Resources

πŸ“š Need More Details?

Comprehensive guides, code examples, and technical specifications