πŸ—„οΈ ARCHIVED PROJECT

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

This project is archived

The Lunar Landing Site API was a 2024–2025 project and is no longer active. The backend has been retired, so sign-ups, API keys and the live endpoints are no longer available.

This page is kept as a record of the work: a pipeline over NASA LOLA terrain and LROC illumination data that scored 1.18M south-pole sites for mission-specific site selection.

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. Note: this project is archived and new API keys are no longer issued
  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