WA

Wayback Machine

global API

Wayback Machine

Type: domain
Module: WaybackMachine

Capabilities

Historical Snapshots URL Lookup Timestamp Search CDX API Search Bulk Availability Content Diffing

Try Wayback Machine

API Endpoint

Results

Overview

The Wayback Machine is a digital archive of the World Wide Web operated by the Internet Archive, a non-profit library. Since 1996, it has been capturing snapshots of web pages, accumulating over 850 billion web pages across hundreds of millions of websites. The Wayback Machine allows users to browse historical versions of any archived website, revealing content that has since been changed, deleted, or taken offline.

For OSINT analysts, the Wayback Machine is an invaluable tool for historical research. It enables recovery of deleted web content, identification of changes in organizational messaging, discovery of previously published information that subjects attempted to remove, and tracking the evolution of web infrastructure over time.

The archival depth varies by website -- high-traffic sites may have thousands of snapshots per year, while smaller sites might have only a handful. The crawling frequency depends on site popularity, external link volume, and explicit requests through the SavePageNow feature. Understanding this sampling behavior is important for investigators because the absence of a snapshot at a particular date does not mean the content did not exist, only that it was not captured at that moment.

Data Coverage

Data TypeDescription
Page SnapshotsFull HTML captures of web pages at specific timestamps
Capture TimelineAll dates when a specific URL was archived
HTTP HeadersResponse headers from the original server at capture time
Linked ResourcesCSS, JavaScript, images, and other embedded resources
URL CoverageAll archived URLs under a given domain
Content ChangesDifferences between snapshots over time
MIME TypesContent type classification for archived resources
Status CodesHTTP response status codes at time of capture

Archive Scale

MetricValue
Total Pages850+ billion web pages
Active Since1996
Unique URLsHundreds of billions
Storage70+ petabytes
Growth RateBillions of pages per month
WebsitesHundreds of millions of domains

Snapshot Fidelity

The quality of archived snapshots varies based on how they were captured:

Fidelity LevelDescriptionLimitations
FullComplete HTML with all resourcesIdeal for analysis
PartialHTML present but some resources missingCSS/images may fail
JavaScript-DependentStatic HTML only, no JS executionSPA content missing
RedirectOnly redirect chain capturedOriginal content not available
Robots ExcludedSite blocked by robots.txtNo content available

API Access

The Wayback Machine provides several API endpoints for programmatic access:

Availability API

Check if a URL has been archived:

GET https://archive.org/wayback/available?url=example.com&timestamp=20240101

CDX Server API

The CDX (Capture/Digital-indeX) API provides full programmatic access to the URL index:

GET https://web.archive.org/cdx/search/cdx?url=example.com&output=json
ParameterDescriptionExample
urlTarget URL (supports wildcards)example.com/*
matchTypeexact, prefix, host, domaindomain
outputResponse formatjson, text
from/toDate range filter20200101/20241231
limitMaximum results1000
flFields to returntimestamp,original,statuscode
filterResult filteringstatuscode:200
collapseDeduplicationtimestamp:6 (monthly)

Integration with Prismatic

Prismatic Platform integrates the Wayback Machine as a historical intelligence source for investigation and attack surface analysis.

# Check availability of a URL
{:ok, snapshot} = WaybackMachine.available("example.com")
# => %{
#   url: "https://web.archive.org/web/20240315120000*/example.com",
#   archived_snapshots: %{
#     closest: %{
#       status: "200",
#       available: true,
#       url: "https://web.archive.org/web/20240315120000/https://example.com",
#       timestamp: "20240315120000"
#     }
#   }
# }

# Get all snapshots for a URL (CDX API)
{:ok, snapshots} = WaybackMachine.cdx_search("example.com",
  from: "20200101",
  to: "20241231",
  output: :json
)

# Get all URLs ever captured under a domain
{:ok, urls} = WaybackMachine.cdx_search("example.com/*",
  match_type: :prefix,
  collapse: "urlkey",
  output: :json
)

# Save a page right now (SavePageNow)
{:ok, saved} = WaybackMachine.save("https://target-site.com/important-page")

# Search for specific file types under a domain
{:ok, pdfs} = WaybackMachine.cdx_search("example.com/*.pdf",
  match_type: :prefix,
  filter: "statuscode:200"
)

# Get content diff between two timestamps
{:ok, changes} = WaybackMachine.diff("example.com",
  timestamp_a: "20230101",
  timestamp_b: "20240101"
)

Historical Intelligence Pipeline

defmodule PrismaticOsint.Investigation.HistoricalAnalysis do
  @moduledoc """
  Analyzes historical web content using Wayback Machine archives
  to discover previously exposed information and track changes.
  """

  def analyze_domain_history(domain) do
    with {:ok, snapshots} <- WaybackMachine.cdx_search("#{domain}/*",
           match_type: :prefix, collapse: "urlkey"),
         {:ok, timeline} <- build_capture_timeline(domain),
         {:ok, exposed} <- find_exposed_content(snapshots) do
      {:ok, %{
        domain: domain,
        total_urls_captured: length(snapshots),
        capture_timeline: timeline,
        first_capture: earliest_timestamp(snapshots),
        last_capture: latest_timestamp(snapshots),
        exposed_files: exposed.sensitive_files,
        exposed_directories: exposed.open_directories,
        technology_evolution: track_technology_changes(snapshots),
        content_changes: significant_changes(snapshots)
      }}
    end
  end

  defp find_exposed_content(snapshots) do
    sensitive_patterns = [
      ~r/\.sql$/,
      ~r/\.env$/,
      ~r/\.bak$/,
      ~r/\.conf$/,
      ~r/wp-config/,
      ~r/phpinfo/,
      ~r/\.git\//,
      ~r/web\.config/
    ]

    sensitive_files =
      snapshots
      |> Enum.filter(fn snapshot ->
        Enum.any?(sensitive_patterns, &Regex.match?(&1, snapshot.url))
      end)

    {:ok, %{sensitive_files: sensitive_files, open_directories: []}}
  end
end

Employee Directory Recovery

Historical snapshots often preserve employee directories, team pages, and contact information that organizations have since removed:

defmodule PrismaticOsint.Investigation.DirectoryRecovery do
  @moduledoc """
  Recovers historical employee directories and contact pages
  from Wayback Machine archives for organizational mapping.
  """

  def recover_directories(domain) do
    team_paths = [
      "#{domain}/team", "#{domain}/about/team", "#{domain}/people",
      "#{domain}/staff", "#{domain}/our-team", "#{domain}/about-us"
    ]

    team_paths
    |> Enum.map(fn path ->
      case WaybackMachine.cdx_search(path, filter: "statuscode:200") do
        {:ok, snapshots} -> {path, snapshots}
        _ -> {path, []}
      end
    end)
    |> Enum.reject(fn {_, snapshots} -> Enum.empty?(snapshots) end)
  end
end

Rate Limits and Access

AspectDetails
AuthenticationNone required for public access
Rate LimitNo official limit; excessive requests may be throttled
Data FormatJSON (CDX API), HTML (web interface)
CostCompletely free (non-profit service)
Robots.txtSome sites block archiving via robots.txt
SavePageNowFree on-demand archiving of any URL

Practical Rate Considerations

While no official limits exist, the Internet Archive may throttle aggressive crawling. Recommended practices:

PracticeRecommendation
Request interval1-2 seconds between CDX API calls
Concurrent requestsMaximum 5-10 concurrent connections
Bulk operationsUse CDX API with pagination, not individual lookups
CachingCache CDX results locally for repeated analysis

Use Cases

Deleted Content Recovery

  • Recover deleted web content that subjects attempted to remove
  • Access historical versions of pages changed after litigation or investigation
  • Retrieve removed press releases, blog posts, or official statements
  • Find previously published pricing, terms, or policy documents

Organizational Intelligence

  • Discover historical employee directories and team pages
  • Track leadership changes through historical about pages
  • Identify previously listed subsidiaries, partners, and vendors
  • Map organizational evolution through website redesigns

Security Research

  • Find previously exposed sensitive files (configs, backups, source code)
  • Track technology stack evolution for vulnerability research
  • Discover historical API endpoints and authentication mechanisms
  • Identify removed security advisories or incident disclosures
  • Establish timelines of web presence for litigation support
  • Document historical claims or representations made online
  • Verify historical compliance statements and certifications
  • Support trademark and intellectual property investigations

Infrastructure Analysis

  • Track historical DNS and hosting changes through archived headers
  • Discover previously used CDNs, analytics, and third-party services
  • Map the evolution of web infrastructure for attribution analysis
  • Correlate with SecurityTrails DNS history data
  • SecurityTrails - Historical DNS data complementing web archives
  • BuiltWith - Technology profiling for archived and current sites
  • Hunter.io - Email finding from current and historical pages
  • URLScan - Current URL analysis and screenshot capture
  • DNSDumpster - Current DNS infrastructure mapping
  • ViewDNS - DNS history and reverse lookups
  • Common Crawl - Alternative web archive with structured data

Connect & Contribute

Created by Tomáš Korcak (korczis) | Open Source under GHL