{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/scrapefield-com/json-schema/scrapefield-com-linkedin-profile-schema.json",
  "title": "linkedin_profile",
  "description": "A LinkedIn profile.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/scrapefield-com-openapi.json#/components/schemas/linkedin_profile",
  "type": "object",
  "required": [
    "vanity_name",
    "url",
    "full_name",
    "first_name",
    "last_name",
    "headline",
    "about",
    "location",
    "profile_picture_url",
    "follower_count",
    "connection_count",
    "open_to_work",
    "current_company",
    "experience",
    "education",
    "skills",
    "emails"
  ],
  "properties": {
    "vanity_name": {
      "type": "string",
      "description": "The part after `/in/` in the profile URL."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The profile."
    },
    "full_name": {
      "type": "string",
      "description": "The name, as the profile shows it."
    },
    "first_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "The given name."
    },
    "last_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "The family name."
    },
    "headline": {
      "type": [
        "string",
        "null"
      ],
      "description": "The line under the name."
    },
    "about": {
      "type": [
        "string",
        "null"
      ],
      "description": "The About section."
    },
    "location": {
      "type": [
        "string",
        "null"
      ],
      "description": "As printed, e.g. \"Berlin, Germany\"."
    },
    "profile_picture_url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri",
      "description": "The profile photo."
    },
    "follower_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "How many members follow the profile."
    },
    "connection_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "LinkedIn stops counting at 500: a value of 500 means \"500+\"."
    },
    "open_to_work": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Whether the profile shows the #OpenToWork frame."
    },
    "current_company": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "url"
      ],
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "As the listing prints it."
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "format": "uri",
          "description": "The company page, where it has one."
        }
      },
      "additionalProperties": false,
      "description": "The employer shown at the top of the profile."
    },
    "experience": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "title",
          "company",
          "employment_type",
          "location",
          "start_date",
          "end_date",
          "is_current",
          "description"
        ],
        "properties": {
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "As the position shows it. `null` where the profile gives none."
          },
          "company": {
            "type": "object",
            "required": [
              "name",
              "url"
            ],
            "properties": {
              "name": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "As the listing prints it."
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri",
                "description": "The company page, where it has one."
              }
            },
            "additionalProperties": false,
            "description": "The employer."
          },
          "employment_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "As printed: \"Full-time\", \"Contract\", …"
          },
          "location": {
            "type": [
              "string",
              "null"
            ],
            "description": "Where the role is based, as printed."
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "`YYYY-MM`, or `YYYY` where the profile gives only a year."
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "`YYYY-MM` or `YYYY`; `null` for a current role, or where the profile gives no date: `is_current` tells which."
          },
          "is_current": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "`true` where the profile says the role runs to the present, `false` where it gives an end date, `null` where it gives no dates."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "What the profile says about the role."
          }
        },
        "additionalProperties": false
      },
      "description": "Positions, most recent first."
    },
    "education": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "school",
          "degree",
          "field_of_study",
          "start_year",
          "end_year"
        ],
        "properties": {
          "school": {
            "type": "object",
            "required": [
              "name",
              "url"
            ],
            "properties": {
              "name": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "As the listing prints it."
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri",
                "description": "The company page, where it has one."
              }
            },
            "additionalProperties": false,
            "description": "The school, and its LinkedIn page where it has one."
          },
          "degree": {
            "type": [
              "string",
              "null"
            ],
            "description": "As printed, e.g. \"Bachelor of Science - BS\"."
          },
          "field_of_study": {
            "type": [
              "string",
              "null"
            ],
            "description": "As printed, e.g. \"Computer Science\"."
          },
          "start_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The year they started."
          },
          "end_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The year they finished, or expect to."
          }
        },
        "additionalProperties": false
      },
      "description": "Schools, most recent first."
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "One skill."
      },
      "description": "As listed on the profile."
    },
    "emails": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "email",
          "status",
          "deliverable",
          "catch_all",
          "free_provider"
        ],
        "properties": {
          "email": {
            "type": "string",
            "description": "The address."
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "`valid` when their mail server accepts it; `risky` when the server accepts every address, so this one cannot be confirmed."
          },
          "deliverable": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether mail to it should arrive."
          },
          "catch_all": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the domain accepts any address at all, which makes a check meaningless."
          },
          "free_provider": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether it is at a free mail service, such as Gmail, rather than an employer's domain."
          }
        },
        "additionalProperties": false,
        "description": "One address."
      },
      "description": "Their work email, found with `detail=with_email` only, best first; empty otherwise, or when none is found."
    }
  },
  "additionalProperties": false
}