February 4, 2025
TL;DR: I downloaded the data from Apple’s careers site because
their search UI infuriates me. The raw data is available here: jobs.json
. The data was last updated
2025-02-03.
As I mentioned in my last blog
post, I’m currently unemployed and spending a lot of time job
searching. I would obviously love to apply to some roles at Apple but I
find their careers website infuriating to use.
Issues with the website
To set the stage, Apple’s Careers site is here. There’s two main things
that bother me personally.

For one, there’s no way to search across all locations. This likely
doesn’t affect most people but I’m currently in a unique life situation
where I’m looking for jobs in multiple countries. This also makes it
difficult to tell what locations Apple has jobs in unless you go
elsewhere and look up the possible options. Note that it does
have a country filter, which is why I say this probably affects me more
than most people.

The other thing that drives me crazy is that there’s no way to get it
to show me jobs of a certain category, like “software engineering”. I
can filter by team, except as shown above engineers could fall under a
bunch of different categories here. Or I can add keyword filters, but
this requires me to try a bunch of searches to catch all the different
ways job titles can be written. Apple uses a lot of these,
including Software Engineer, SWE, AI/ML Engineer, Hardware Engineer,
Network Engineer, etc. I’m not saying these are all jobs I’m looking at
personally – just all jobs that someone might come to this website and
have an expectation of seeing.
Getting the data
As usual in situations like this, I started with the browser
developer tools. I thought that the location limitation was imposed by
the UI but unfortunately it turns out that this is a requirement of the
underlying API. The search calls out to this API:
POST https://jobs.apple.com/api/role/search
{
"query": The query string,
"locale": Locale (I used en-us everywhere),
"filters": {
"postingpostLocation": [List of location IDs (see below)]
},
"page": Page number, starting at 1
}
For United States (the default location for me), the location ID
value is postLocation-USA
, so it’s not something obvious
like the international country code. This meant that I needed to get the
location IDs for locations I cared about. When you type in the Location
box on their search page, it performs find-as-you-type lookups. These
call o