{
  "openapi": "3.0.1",
  "info": {
    "title": "Expedia Brazil Car Rentals Scraper",
    "description": "Scrape car rental offers from Expedia Brazil (expedia.com.br) in Brazilian Reais. Pick from 24 Brazilian airports and a date range, and get vehicle model, daily rate in R$, rental company and transmission for every available car.",
    "version": "0.1",
    "x-build-id": "9EKPcas6So6nkB8rH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/xtracto~expedia-brazil-car-rentals/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-xtracto-expedia-brazil-car-rentals",
        "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/xtracto~expedia-brazil-car-rentals/runs": {
      "post": {
        "operationId": "runs-sync-xtracto-expedia-brazil-car-rentals",
        "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/xtracto~expedia-brazil-car-rentals/run-sync": {
      "post": {
        "operationId": "run-sync-xtracto-expedia-brazil-car-rentals",
        "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",
        "properties": {
          "pickupLocations": {
            "title": "Pick-up airports",
            "type": "array",
            "description": "Brazilian pick-up airports to search. Leave the list empty to search all 24. Values are IATA codes; the actor also accepts a raw Expedia region id (dpln) if you need an airport that is not on this list.",
            "items": {
              "type": "string",
              "enum": [
                "REC",
                "CGH",
                "CNF",
                "CWB",
                "FLN",
                "FOR",
                "GIG",
                "GRU",
                "JPA",
                "MCZ",
                "NAT",
                "POA",
                "SSA",
                "VCP",
                "GYN",
                "BPS",
                "CGR",
                "VIX",
                "AJU",
                "NVT",
                "SDU",
                "QNS",
                "CXJ",
                "RAO"
              ],
              "enumTitles": [
                "Aeroporto de Recife",
                "Aeroporto de São Paulo Congonhas",
                "Aeroporto de Belo Horizonte",
                "Aeroporto de Curitiba",
                "Aeroporto de Florianópolis",
                "Aeroporto de Fortaleza",
                "Aeroporto do Rio de Janeiro (GIG)",
                "Aeroporto de São Paulo Guarulhos (GRU)",
                "Aeroporto de João Pessoa (JPA)",
                "Aeroporto de Maceió (MCZ)",
                "Aeroporto de Natal (NAT)",
                "Aeroporto de Porto Alegre (POA)",
                "Aeroporto de Salvador (SSA)",
                "Aeroporto de Campinas (VCP)",
                "Aeroporto de Goiânia (GYN)",
                "Aeroporto de Porto Seguro (BPS)",
                "Aeroporto de Campo Grande (CGR)",
                "Aeroporto de Vitória (VIX)",
                "Aeroporto de Aracaju (AJU)",
                "Aeroporto de Navegantes (NVT)",
                "Aeroporto de Santos Dumont (SDU)",
                "Aeroporto de Canoas (QNS)",
                "Aeroporto de Caxias do Sul (CXJ)",
                "Ribeirão Preto (RAO)"
              ]
            }
          },
          "startDate": {
            "title": "Start date (pick-up)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
            "type": "string",
            "description": "Pick-up date and time in YYYY-MM-DD HH:MM:SS format, e.g. 2026-09-07 10:30:00. Use this for a single rental period; for many periods in one run use Date ranges below. Expedia only offers :00 and :30 slots, so the time is snapped to the nearest half hour."
          },
          "endDate": {
            "title": "End date (drop-off)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
            "type": "string",
            "description": "Drop-off date and time in YYYY-MM-DD HH:MM:SS format, e.g. 2026-09-08 10:30:00. Must be after the start date. Ignored when Date ranges is set."
          },
          "dateRanges": {
            "title": "Date ranges (many rental periods in one run)",
            "type": "array",
            "description": "Search several rental periods in a single run. Every airport is searched for every period listed here, and they all share one warm-up, which makes this far cheaper than one run per period. Format: [{\"startDate\": \"2026-09-07 10:30:00\", \"endDate\": \"2026-09-08 10:30:00\"}, {\"startDate\": \"2026-09-14 10:30:00\", \"endDate\": \"2026-09-21 10:30:00\"}]. Overrides the single Start date / End date fields above."
          },
          "maxResultsPerSearch": {
            "title": "Max offers per airport",
            "minimum": 0,
            "type": "integer",
            "description": "Cap the number of car offers emitted per airport. 0 = no cap (every offer Expedia lists).",
            "default": 0
          },
          "sessionHuntAttempts": {
            "title": "Session hunt attempts",
            "minimum": 10,
            "maximum": 300,
            "type": "integer",
            "description": "How many Brazilian exit IPs to try before giving up on finding one Expedia's bot protection accepts. Only about 1 in 20 residential IPs gets through, but a single accepted one covers the whole run, so the default of 80 leaves a wide margin. Raise it if runs fail to start; each attempt costs a second or two.",
            "default": 80
          },
          "pageCount": {
            "title": "Offers requested per call",
            "minimum": 10,
            "maximum": 200,
            "type": "integer",
            "description": "Expedia's selPageCount. 100 returns a Brazilian airport's full inventory in a single call, so there is normally nothing to paginate.",
            "default": 100
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Currency for prices. Keep BRL (R$) — the Brazilian point of sale is what this actor is built and tested for.",
            "default": "BRL"
          },
          "locale": {
            "title": "Locale",
            "type": "string",
            "description": "Expedia locale. Keep pt_BR — vehicle attributes such as the transmission chip are read from the Portuguese labels.",
            "default": "pt_BR"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Must be a Brazilian residential proxy. Expedia picks the point of sale from the exit IP: from a non-Brazilian IP it switches away from expedia.com.br pricing and returns a different currency instead of R$.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "BR"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}