{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn LATAM Tech Jobs Scraper + Company Domain",
    "description": "Scrape LinkedIn tech jobs in Brazil, Mexico, Argentina, Colombia, Chile and 13 more Latin American countries, without login or cookies. Each job comes with the company website and domain, extracted tech stack, remote/hybrid, English level, salary, job poster and optional email pattern.",
    "version": "0.1",
    "x-build-id": "jmpROsAgYnIFv3OoJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/oswaldocarabano~linkedin-latam-tech-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-oswaldocarabano-linkedin-latam-tech-jobs-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/oswaldocarabano~linkedin-latam-tech-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-oswaldocarabano-linkedin-latam-tech-jobs-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/oswaldocarabano~linkedin-latam-tech-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-oswaldocarabano-linkedin-latam-tech-jobs-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",
        "properties": {
          "outputType": {
            "title": "What to scrape",
            "enum": [
              "jobs",
              "companies"
            ],
            "type": "string",
            "description": "One row type per run. \"Jobs\" gives one row per job posting (the main product). \"Hiring companies\" gives one row per company that is hiring for your search, with its open jobs, website, domain and profile.",
            "default": "jobs"
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Job titles or skills to search for, like the LinkedIn search box (e.g. \"software engineer\", \"react developer\", \"data engineer\", \"devops\"). Each keyword is a separate search in every country. Plain words only: no URLs. Up to 10.",
            "default": [
              "software engineer"
            ],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Latin American countries to search in. \"Latin America (whole region)\" searches the LinkedIn region as one place. The budget (Max items) is shared in turns between every keyword and country.",
            "items": {
              "type": "string",
              "enum": [
                "BR",
                "MX",
                "AR",
                "CO",
                "CL",
                "PE",
                "UY",
                "CR",
                "EC",
                "GT",
                "PA",
                "DO",
                "BO",
                "PY",
                "VE",
                "SV",
                "HN",
                "NI",
                "LATAM"
              ],
              "enumTitles": [
                "Brazil",
                "Mexico",
                "Argentina",
                "Colombia",
                "Chile",
                "Peru",
                "Uruguay",
                "Costa Rica",
                "Ecuador",
                "Guatemala",
                "Panama",
                "Dominican Republic",
                "Bolivia",
                "Paraguay",
                "Venezuela",
                "El Salvador",
                "Honduras",
                "Nicaragua",
                "Latin America (whole region)"
              ]
            },
            "default": [
              "BR",
              "MX",
              "AR",
              "CO",
              "CL"
            ]
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "day",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only jobs posted in this period. Applied by LinkedIn itself.",
            "default": "month"
          },
          "workplaceTypes": {
            "title": "Workplace type",
            "type": "array",
            "description": "Keep only remote, hybrid or on-site jobs. LinkedIn ignores this filter for visitors without an account, so the actor reads it from the job title, location and description (detected in 64.5% of measured jobs). Jobs whose posting does not say it are skipped when this filter is set. Skipped jobs are never charged. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            },
            "default": []
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Keep only these LinkedIn seniority levels (read from each job page, 100% filled). Skipped jobs are never charged. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "mid-senior",
                "director",
                "executive",
                "not-applicable"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive",
                "Not applicable"
              ]
            },
            "default": []
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep only these employment types (read from each job page, 100% filled). Skipped jobs are never charged. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            },
            "default": []
          },
          "techOnly": {
            "title": "Tech jobs only",
            "type": "boolean",
            "description": "Skip postings that are not software, data, cloud, QA, security, product or IT roles (decided from the title, or from 3+ technologies in the description). Skipped jobs are never charged.",
            "default": true
          },
          "requireKeywordMatch": {
            "title": "Only jobs that mention your keyword",
            "type": "boolean",
            "description": "LinkedIn fills searches with unrelated jobs when few match (a nonsense keyword still returns 10 jobs per page). With this on, a job is kept only if its title or description contains every word of the keyword. Skipped jobs are never charged.",
            "default": true
          },
          "includeCompanyDetails": {
            "title": "Company profile",
            "type": "boolean",
            "description": "Add the hiring company's public LinkedIn profile to each row: industry, size, employees on LinkedIn, followers, headquarters and full address, type, founded year, specialties, description, office locations and similar companies. Charged once per company per run. The company website and domain are always included, even with this off.",
            "default": true
          },
          "inferEmailPattern": {
            "title": "Email pattern",
            "type": "boolean",
            "description": "Infer the company's email format (e.g. first.last@example.com) from the emails and names published in its job postings, check the domain's mail servers (MX, DNS only) and detect the email provider. When the job poster is known, adds their likely email. Never sends an email or probes a mailbox. Charged once per domain per run, only when the pattern is backed by published emails; an inferred pattern is delivered free and marked emailPatternInferred: true.",
            "default": false
          },
          "includePersonalEmails": {
            "title": "Include personal email addresses",
            "type": "boolean",
            "description": "Emails at personal providers (Gmail, Outlook, Hotmail, Yahoo, iCloud, Proton…) found in job descriptions are withheld by default and only counted. Turn on to include them.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum rows to deliver (jobs, or companies). Each LinkedIn search reaches at most 1,000 jobs; add keywords or countries to go further.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Job pages read at the same time. Each one uses its own connection at about one request per second, the pace measured to stay clear of LinkedIn rate limits. With 3, 100 jobs with company profiles took 158–163 s in our test runs on Apify.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Leave empty: the actor uses its own residential connection. Set it only to route through your own Apify Proxy group or proxy URLs.",
            "default": {}
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}