Free · No API key

Real photos from Mars.
One simple API.

Browse images from NASA's Perseverance and Curiosity rovers by sol, Earth date or camera. Send a request and get clean JSON back, with no sign-up and no key.

Built for developers, educators, artists and citizen scientists. Data comes from NASA's raw image feeds.

The rovers on Mars

Two active missions, each with its own set of cameras for navigation, engineering and science.

Perseverance rover

Perseverance

Landed February 18, 2021. Searching for signs of ancient life.

Curiosity rover

Curiosity

Landed August 6, 2012. Studying Mars' climate and geology.

API endpoints

Every request is a GET against the base URL. Open any example below to see the raw JSON.

Photo by ID

Retrieve a single photo by its unique identifier.

GET/photos/{id}
Open example

Photos by sol

Photos from a specific Martian day since landing.

GET/rovers/{rover}/photos?sol={sol_number}
Open example

Photos by Earth date

Photos taken on a specific Earth calendar date.

GET/rovers/{rover}/photos?earth_date={YYYY-MM-DD}
Open example

Filter by camera

Add a camera abbreviation to any sol or date search.

GET/rovers/{rover}/photos?sol={sol}&camera={camera_abbr}
Open example

Latest photos

The most recent photos a rover has sent back.

GET/rovers/{rover}/latest_photos
Open example

Mission manifest

Landing date, max sol, total photos, and photo counts per sol.

GET/manifests/{rover_name}
Open example

Step onto Mars in one request

You don't need a NASA badge. Call the API from any language or straight from the browser.

Request
fetch('https://rovers.nebulum.one/api/v1/rovers/curiosity/photos?earth_date=2026-02-15')
  .then(res => res.json())
  .then(data => console.log(data));
Sample response
{
  "photos": [{
    "id": 91453,
    "sol": 4809,
    "camera": { "id": 28, "name": "MAHLI",
      "full_name": "Mars Hand Lens Imager" },
    "img_src": "https://mars.nasa.gov/msl-raw-images/...jpg",
    "earth_date": "2026-02-15",
    "rover": { "id": 2, "name": "Curiosity",
      "landing_date": "2012-08-06" }
  }]
}

A full response for this sol includes 24 photos from several cameras (MAHLI, FHAZ, RHAZ, NAV). Each photo is organized by sol (Martian day since landing) and earth_date.

Cameras to choose from

Each camera has its own job. Color cameras suit science and outreach; grayscale ones handle navigation and safety.

Perseverance
CameraTypeColorPurpose
EDL_RUCAMEDLColorParachute deployment during landing
EDL_RDCAMEDLColorTerrain during descent
EDL_DDCAMEDLColorLanding sequence from descent stage
EDL_PUCAM1EDLColorParachute during descent
EDL_PUCAM2EDLColorBackup parachute monitoring
NAVCAM_LEFTNavigationGrayStereo navigation and path planning
NAVCAM_RIGHTNavigationGrayStereo navigation and path planning
MCZ_RIGHTScienceColorZoomable color panoramas and geology
MCZ_LEFTScienceColorZoomable color panoramas and geology
FRONT_HAZCAM_LEFT_AEngineeringGrayObstacles in the rover's path
FRONT_HAZCAM_RIGHT_AEngineeringGrayObstacles in the rover's path
REAR_HAZCAM_LEFTEngineeringGrayTerrain behind the rover
REAR_HAZCAM_RIGHTEngineeringGrayTerrain behind the rover
SKYCAMAtmosphericColorSky, clouds and atmosphere (MEDA)
SHERLOC_WATSONScienceColorClose-up macro of rock textures
Curiosity
CameraTypeColorPurpose
FHAZEngineeringGrayObstacles ahead of the rover
RHAZEngineeringGrayTerrain behind the rover
MASTScienceColorColor panoramas and geology
CHEMCAMScienceGrayLaser target spot imaging
MAHLIScienceColorClose-ups of rocks and soil
MARDIEDLColorLanding descent images
NAVCAMNavigationGrayStereo navigation and path planning

Questions developers ask

Anything else? Reach out through nebulum.one.

Do I need an API key?

No. The API is free and requires no authentication. Just send a GET request.

What's the difference between sol and Earth date?

A sol is one Martian day since the rover landed. An Earth date is the regular calendar date. You can search by either one.

Where do the photos come from?

Photos are served from NASA's raw image feeds. Each result includes an img_src link to the original image.

How do I find the newest photos?

Use /rovers/{rover}/latest_photos, or check the manifest endpoint for a rover's max sol and max date.

Which rovers are supported?

Perseverance and Curiosity. Use the rover name in the URL, for example /rovers/perseverance/photos.

Try the API

Pick a rover, see Mars.

Choose a rover and a sol. This sends a real request to the API and shows the first few photos.