{
  "slug": "location-history-parser",
  "name": "gizza-ai/location-history-parser",
  "version": "0.1.0",
  "title": "Location History Parser — Google Takeout & Dawarich JSON to Per-Day Places & Distance — gizza.ai",
  "description": "Turn Google Takeout or Dawarich location-history JSON into per-day places visited and distance traveled. Text, CSV, or JSON; km or miles.",
  "tags": [
    "location history parser",
    "google takeout location history",
    "google timeline parser",
    "records.json parser",
    "semantic location history",
    "dawarich",
    "places visited per day",
    "distance traveled",
    "gps stop detection"
  ],
  "category": "utilities",
  "urls": {
    "page": "https://gizza.ai/tools/location-history-parser/",
    "markdown": "https://gizza.ai/tools/location-history-parser/index.md",
    "descriptor": "https://gizza.ai/tools/location-history-parser/tool.json",
    "deep_link_example": "https://gizza.ai/tools/location-history-parser/?input=%7B%22timelineObjects%22%3A%5B%7B%22placeVisit%22%3A%7B%22location%22%3A%7B%22latitudeE7%22%3A400000000%2C%22longitudeE7%22%3A-740000000%2C%22name%22%3A%22Home%22%7D%2C%22duration%22%3A%7B%22startTimestamp%22%3A%222024-01-01T08%3A00%3A00Z%22%7D%7D%7D%2C%7B%22activitySegment%22%3A%7B%22distance%22%3A5000%2C%22duration%22%3A%7B%22startTimestamp%22%3A%222024-01-01T09%3A00%3A00Z%22%7D%7D%7D%5D%7D&output=text&unit=km&utc_offset=0&place_radius=150&min_stay=10"
  },
  "cli": "gizza tool location-history-parser '{\"timelineObjects\":[{\"placeVisit\":{\"location\":{\"latitudeE7\":400000000,\"longitudeE7\":-740000000,\"name\":\"Home\"},\"duration\":{\"startTimestamp\":\"2024-01-01T08:00:00Z\"}}},{\"activitySegment\":{\"distance\":5000,\"duration\":{\"startTimestamp\":\"2024-01-01T09:00:00Z\"}}}]}'",
  "tool": {
    "description": "Parse a location-history JSON export into a per-day summary of places visited and distance traveled. Auto-detects Google Takeout classic Records (locations[]), Semantic Location History (timelineObjects[]), the newer on-device Timeline (semanticSegments[]), GeoJSON Point FeatureCollections, and plain {latitude,longitude,timestamp} point arrays (Dawarich / generic). Named exports use their own visited places and activity distances; raw GPS streams get stop detection (place_radius meters + min_stay minutes) and great-circle (haversine) distance. Choose km or mi, a UTC offset so days match your local calendar, and text, CSV, or JSON output. Runs entirely locally; nothing is uploaded.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "input": {
          "description": "Location-history JSON export to summarize. Accepts Google Takeout classic Records (a \"locations\" array), Semantic Location History (\"timelineObjects\"), the newer on-device Timeline (\"semanticSegments\"), a GeoJSON Point FeatureCollection, or a plain array of {latitude, longitude, timestamp} points (Dawarich / generic).",
          "type": "string"
        },
        "min_stay": {
          "default": 10.0,
          "description": "Raw GPS streams only: minimum dwell in minutes for a point cluster to count as a visited place. Ignored for exports that already carry named places. Default 10.",
          "maximum": 10000,
          "minimum": 0,
          "type": "number"
        },
        "output": {
          "default": "text",
          "description": "Output format: text (a per-day summary plus totals), csv (date,places,distance rows), or json (structured days with place names and totals). Default text.",
          "enum": [
            "text",
            "csv",
            "json"
          ],
          "type": "string"
        },
        "place_radius": {
          "default": 150.0,
          "description": "Raw GPS streams only: proximity radius in meters for stop detection. Consecutive points within this radius of a cluster anchor form one visited place. Ignored for exports that already carry named places. Default 150.",
          "maximum": 100000,
          "minimum": 1,
          "type": "number"
        },
        "unit": {
          "default": "km",
          "description": "Distance unit for the report: km (kilometers) or mi (miles). Default km.",
          "enum": [
            "km",
            "mi"
          ],
          "type": "string"
        },
        "utc_offset": {
          "default": 0.0,
          "description": "Hours to add to UTC timestamps before bucketing into calendar days, so days match your local time (e.g. -5 for US Eastern, 5.5 for India). Default 0 (UTC).",
          "maximum": 14,
          "minimum": -14,
          "type": "number"
        }
      },
      "required": [
        "input"
      ],
      "type": "object"
    }
  }
}