---
title: "Memento"
description: "MemGator's JSON TimeMap across several archives, kept outside providers.all() to avoid asking twice."
canonical_url: "https://archives.agntn.dev/providers/memento"
---
# Memento

> MemGator's JSON TimeMap across several archives, kept outside providers.all() to avoid asking twice.

<provider-facts slug="memento">



</provider-facts>

## Load it

```ts
import { createArchive, providers } from "@agntn/archives";

const archive = createArchive(providers.memento());
const own = createArchive(providers.memento({ baseUrl: "https://memgator.example.org" }));
```

## What it lists

`snapshots` reads `memgator.cs.odu.edu/timemap/json/<url>`, the public MemGator aggregator run by Old Dominion University. It replaced the discontinued Memento Time Travel service. Each memento becomes a page with `_meta.archive` set to the upstream host (`archive.md`, `web.archive.org`, `arquivo.pt`, …) and `_meta.datetime` as the TimeMap printed it. Captures dated years in the future are dropped as clock errors.

`baseUrl` points the provider at another aggregator that speaks MemGator's API.

## Reading bodies

`content()` reads the selected memento URI directly, and falls back to MemGator's `/memento/proxy/` endpoint when the archive does not answer. `_meta.proxyFallback` says which path served the body, and `snapshot` names the URL actually read.

## Gotchas

- Memento is not in `providers.all()`. MemGator already asks the Wayback Machine, Archive.today and others, so adding it to `all` would double the requests to those archives.
- A diff between two Memento captures requires the same `_meta.archive` host. The aggregator label alone is not enough provenance.
- Aggregation takes seconds; MemGator waits for slow upstreams.

## Where it lives

`src/providers/memento.ts`.


## Sitemap

See the full [sitemap](https://archives.agntn.dev/sitemap.md) for all pages.
