> ## Documentation Index
> Fetch the complete documentation index at: https://docs.datamagnet.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog: September 2026

> September 2026 Datamagnet API release notes: the Person response now has the same fields on every request, several fields change type or name, and many new profile fields are added.

<Update label="September 19, 2026" tags={["Breaking", "Improved", "New"]}>
  ## Week of September 19

  ### Person: the same response shape on every request

  [Person](/api-reference/endpoints/people) now returns the same set of fields, in the same order, on every request. Every entry in a list (`experience`, `education`, `certification`, `publication`, `project`, `volunteering`, `honors_and_awards`, `organizations`, `patents`, `language`, `courses`) has the same keys. Before, a field could be present on one request and missing on the next for the same profile. That no longer happens, including for profiles served from cache.

  A field with no value is still present:

  * `""` for text
  * `[]` for lists
  * `null` where the value is not known

  Check a field's value, not whether the key exists.

  ### Breaking changes

  | Field                                                                                                      | Before                                                                                          | Now                                                                                                    |
  | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
  | `followers`, `connections`                                                                                 | sometimes `0` when the count was not available                                                  | `null` when the count is not available                                                                 |
  | `job_still_working` (profile and `experience[]`)                                                           | `false` for a role with no dates                                                                | `null` for a role with no start or end date; `true` / `false` only when the dates are known            |
  | `certification[].startedOn`                                                                                | `startedOn`                                                                                     | renamed to `started_on` (same object)                                                                  |
  | `publication[].published_on`                                                                               | sometimes an object `{ "year", "month", "day" }`                                                | always the string `"M/D/YYYY"` (`""` when there is no month); the object is now in `published_on_date` |
  | `honors_and_awards[]`, `organizations[]`, `patents[].inventors[]`, `project[].contributors[]`, `courses[]` | sometimes camelCase keys (`issuedOn`, `positionHeld`, `firstName`, …) and `multiLocale*` copies | snake\_case keys only (`issued_on`, `position_held`, `first_name`, …); `multiLocale*` removed          |
  | `location_state`, `location_county`                                                                        | sometimes `"City, State"`                                                                       | `location_state` is the state or region; `location_county` is always `""`                              |
  | `experience[].company_id`                                                                                  | `"0"` for a company without a LinkedIn page                                                     | `""`                                                                                                   |
  | `experience[].job_location_country`                                                                        | could end in `" · Remote"`                                                                      | the country only; the workplace type is in the new `workplace_type`                                    |
  | `honors_and_awards[].issuer`                                                                               | sometimes `"Issued by …"`                                                                       | the issuer's name only                                                                                 |
  | `project[].description`                                                                                    | could start with `"Associated with …"`                                                          | that line is in `associated_with`                                                                      |
  | `volunteering[].is_current_position`                                                                       | `true` for an entry with no dates                                                               | `true` only when the entry has a start date and no end date                                            |

  ### New fields

  **Profile**

  * **Location:** `address_without_country`, `address_country_only`, `country_code` (ISO 3166 alpha-2, e.g. `"US"`) and `location_city`. The existing `location`, `country`, `address_with_country` and `address` are now present on every response too.
  * **Industry:** `industry` and `industry_name` (always the same value), plus `industry_urn`.
  * **Pictures:** `profile_pictures` / `avatar_all_dimensions` and `background_pictures` / `background_picture_all_dimensions`. Both forms are always present and list the same images.
  * **Other fields now present on every response:** `total_experiences`, `primary_locale`, `is_hiring`, `is_memorialized`, `show_premium_badge`, `courses`, `updates`, `contact_info`. A flag that could not be read is `null`, not `false`.
  * **Birthday:** `birthday` is filled with the month and day when the profile shows them.

  **Experience**

  * `workplace_type`: `"On-site"`, `"Remote"` or `"Hybrid"`, when the role shows it.
  * `company_username` and `company_urn` on every role.
  * When a company is known to us, `company_id`, `company_username` and `company_url` identify it the same way on every request. `company_url` takes the form `https://www.linkedin.com/company/<name>/`.
  * `company_headcount_range` always uses the form `"11-50 employees"`.

  **Other sections**

  * `education[].university_urn`.
  * `publication[]`: `published_on_date` (`{ "day", "month", "year" }`, `0` when unknown), `publishing_date` (`"Nov 11 2014"`) and `authors`.
  * `project[]`: `start`, `end`, `date`, `url`, `contributors`, `associated_with` and `subtitle`.
  * `volunteering[]`: `started_on`, `ended_on`, `start_date`, `end_date`, `duration`, `is_current_position`, `description`, `cause`, and `organization` alongside `company_name`.
  * `certification[]`: both naming styles are always filled, `issuer` / `authority` / `company_name`, `issued_on` / `started_on` and `expires_on` / `end_date`.
  * `organizations[]`: `name` / `title`, `position_held` / `subtitle`, `start` and `end`.
  * `honors_and_awards[].issued_on`.

  ### Fixes

  * Education dates written with months (e.g. `"Sep 2023 - Present"`) were being dropped. They are now returned, including the month.
  * Experience lists for profiles with a long work history are more complete.
  * `use_cache: "never"` now always fetches the profile fresh. Before, repeating the same request within a few minutes could return the previous response.
  * A role whose only location was its workplace type (e.g. "Remote") now gets the profile's location, like any other role without one.
</Update>
