{
  "slug": "har-request-extract",
  "name": "gizza-ai/har-request-extract",
  "version": "0.1.0",
  "title": "HAR Request Extractor — list requests from an HTTP Archive — gizza.ai",
  "description": "Extract every request from a HAR capture — method, URL, status, type, size, timing — as a table, CSV, JSON, or URL list. Filter and sort, all in your browser.",
  "tags": [
    "har request extractor",
    "har to csv",
    "har file analyzer",
    "extract urls from har",
    "http archive requests",
    "har timing",
    "har viewer",
    "network capture list"
  ],
  "category": "network",
  "urls": {
    "page": "https://gizza.ai/tools/har-request-extract/",
    "markdown": "https://gizza.ai/tools/har-request-extract/index.md",
    "descriptor": "https://gizza.ai/tools/har-request-extract/tool.json",
    "deep_link_example": "https://gizza.ai/tools/har-request-extract/?har=%7B%22log%22%3A%7B%22entries%22%3A%5B%7B%22startedDateTime%22%3A%222024-01-01T00%3A00%3A00.000Z%22%2C%22time%22%3A120%2C%22request%22%3A%7B%22method%22%3A%22GET%22%2C%22url%22%3A%22https%3A%2F%2Fexample.com%2F%22%7D%2C%22response%22%3A%7B%22status%22%3A200%2C%22statusText%22%3A%22OK%22%2C%22content%22%3A%7B%22mimeType%22%3A%22text%2Fhtml%22%2C%22size%22%3A5120%7D%2C%22bodySize%22%3A2048%7D%7D%5D%7D%7D&format=table&status=all&method=GET&url_contains=%2Fapi%2F&sort=order"
  },
  "cli": "gizza tool har-request-extract '{\"log\":{\"entries\":[{\"startedDateTime\":\"2024-01-01T00:00:00.000Z\",\"time\":120,\"request\":{\"method\":\"GET\",\"url\":\"https://example.com/\"},\"response\":{\"status\":200,\"statusText\":\"OK\",\"content\":{\"mimeType\":\"text/html\",\"size\":5120},\"bodySize\":2048}}]}}'",
  "tool": {
    "description": "Extract the request list from a HAR (HTTP Archive) capture: every request's method, URL, status code, content type, transferred size, and total time, as an aligned text table (with a count + bytes-transferred summary), CSV, JSON, or a plain URL list. Filter by status class (2xx/3xx/4xx/5xx/errors incl. failed status-0 requests), exact HTTP method, or a URL substring; sort by capture order, slowest first, or largest first. Only the request list is extracted — headers, cookies, and bodies are never output. Forgiving about incomplete entries; runs locally.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "format": {
          "default": "table",
          "description": "Output format. 'table' = aligned text columns with a summary line. 'csv' = spreadsheet-ready rows with a header (index,method,url,status,status_text,mime_type,size_bytes,time_ms,started). 'json' = array of request objects with the same fields. 'urls' = one URL per line.",
          "enum": [
            "table",
            "csv",
            "json",
            "urls"
          ],
          "type": "string"
        },
        "har": {
          "description": "The HAR (HTTP Archive) capture as JSON text — the { \"log\": { \"entries\": [ … ] } } object that browser DevTools export via Network tab → \"Save all as HAR\".",
          "type": "string"
        },
        "method": {
          "default": "",
          "description": "Keep only requests with this HTTP method — case-insensitive exact match, e.g. GET, POST, PUT. Empty = all methods.",
          "type": "string"
        },
        "sort": {
          "default": "order",
          "description": "Row order: 'order' = capture order (default), 'slowest' = longest total time first, 'largest' = biggest response first. The # column always keeps each request's original capture position.",
          "enum": [
            "order",
            "slowest",
            "largest"
          ],
          "type": "string"
        },
        "status": {
          "default": "all",
          "description": "Keep only requests in a status class: '2xx' success, '3xx' redirects, '4xx' client errors, '5xx' server errors, or 'errors' = 4xx + 5xx + failed requests recorded with status 0. Default 'all'.",
          "enum": [
            "all",
            "2xx",
            "3xx",
            "4xx",
            "5xx",
            "errors"
          ],
          "type": "string"
        },
        "url_contains": {
          "default": "",
          "description": "Keep only requests whose URL contains this text (case-insensitive substring), e.g. /api/ or .png or example.com. Empty = no URL filter.",
          "type": "string"
        }
      },
      "required": [
        "har"
      ],
      "type": "object"
    }
  }
}