{
  "openapi": "3.0.1",
  "info": {
    "title": "Gap Inc Scraper (Gap, Old Navy, Banana Republic, Athleta)",
    "description": "Scrape live product listings across Gap Inc's apparel & home-goods brands - Gap, Gap Factory, Old Navy, Banana Republic, and Athleta. Get prices, sale prices, colors, sizes, images, and ratings via the brands' shared public search API. No login, no cookies, no proxy required.",
    "version": "1.0",
    "x-build-id": "1rDBlEggQTgBaZh6h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~gap-inc-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-gap-inc-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/crawlerbros~gap-inc-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-gap-inc-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/crawlerbros~gap-inc-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-gap-inc-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "brand",
          "searchQuery"
        ],
        "properties": {
          "brand": {
            "title": "Brand",
            "enum": [
              "on",
              "gap",
              "gapfs",
              "br",
              "at"
            ],
            "type": "string",
            "description": "Which Gap Inc storefront to search.",
            "default": "on"
          },
          "market": {
            "title": "Market / country",
            "enum": [
              "us",
              "ca"
            ],
            "type": "string",
            "description": "Which country storefront to query. `ca` (Canada) returns a distinct catalog/pricing (CAD) and is available for Old Navy, Gap, Banana Republic, and Athleta; Gap Factory has no Canadian storefront and always falls back to `us` (a warning is logged).",
            "default": "us"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text keyword, e.g. `jeans`, `t-shirt`, `dress`. Required — the upstream API has no keyword-less browse endpoint. Use a broad term like `new` combined with the `department` filter to approximate category browsing. Note: the upstream search API does fuzzy/recommendation-based matching, not strict filtering — English apparel terms (`jeans`, `dress`) match well, but misspelled, non-English, or nonsense keywords may fall back to generic trending products for that brand rather than returning zero results.",
            "default": "new"
          },
          "department": {
            "title": "Department",
            "enum": [
              "",
              "Women",
              "Men",
              "Girls",
              "Boys",
              "Toddler Girls",
              "Toddler Boys",
              "Baby Girls",
              "Baby Boys",
              "Gender Neutral",
              "Maternity"
            ],
            "type": "string",
            "description": "Filter to a department/demographic (server-side upstream facet, not re-verified client-side). Overwhelmingly accurate, but the upstream search API occasionally includes a small number of cross-listed/adjacent-department items (e.g. a men's item appearing in a Women-filtered result) the same way gap.com's own \"Refine By\" department filter does. Leave empty for all.",
            "default": ""
          },
          "minPrice": {
            "title": "Min price (USD)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Only include products whose lowest sale price is at least this amount."
          },
          "maxPrice": {
            "title": "Max price (USD)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Only include products whose lowest sale price is at most this amount."
          },
          "onSaleOnly": {
            "title": "On sale only",
            "type": "boolean",
            "description": "Only include products currently discounted below their regular price.",
            "default": false
          },
          "priceType": {
            "title": "Discount type",
            "enum": [
              "",
              "PROMO",
              "MARKDOWN",
              "REGULAR"
            ],
            "type": "string",
            "description": "Restrict results to a specific discount tier (server-side filter, upstream facet). Leave empty for all products.",
            "default": ""
          },
          "minReviewScore": {
            "title": "Minimum customer review score",
            "enum": [
              "",
              "4",
              "3",
              "2",
              "1"
            ],
            "type": "string",
            "description": "Only include products with at least this average review rating (server-side filter, upstream facet). Leave empty for all products.",
            "default": ""
          },
          "color": {
            "title": "Color",
            "enum": [
              "",
              "Black",
              "White",
              "Blue",
              "Gray",
              "Brown",
              "Beige",
              "Red",
              "Green",
              "Yellow",
              "Orange",
              "Pink",
              "Purple",
              "Gold",
              "Silver",
              "Multi",
              "Clear"
            ],
            "type": "string",
            "description": "Restrict results to a color family (server-side filter, upstream facet). Leave empty for all colors.",
            "default": ""
          },
          "additionalFacets": {
            "title": "Additional facet filters (advanced)",
            "type": "array",
            "description": "Extra upstream search facets as `name=value` strings, e.g. `fit=Skinny`, `wash=Light Wash`, `rise=High`, `sleeveLength=Short Sleeve`, `activity=Running`, `occasion=Wedding`. The available facet names/values vary by category and search keyword — run without this first, then check the \"Refine By\" filter sidebar on the matching gap.com/oldnavy.com/etc. site for the exact facet names for your keyword.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "featured",
              "price",
              "reviewScore",
              "discount"
            ],
            "type": "string",
            "description": "Result ordering. `price` is a genuine server-side sort (verified monotonic across the full paginated catalog) so it covers every matching product, not just a sample. `reviewScore`/`discount` have no working server-side equivalent, so those are applied client-side over a scanned candidate pool (up to 5x `maxItems`, capped at 500) instead. `newest` is not offered — the upstream API exposes no reliable date-added field to sort on.",
            "default": "featured"
          },
          "sortDir": {
            "title": "Sort direction",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string",
            "description": "Ascending or descending. Ignored when sortBy=featured.",
            "default": "desc"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard cap on emitted product records.",
            "default": 50
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}