SwiftSchema Logo

    SwiftSchema

    Intuitive Schema Generation at Your Fingertips

    AboutLearnContact

    EstimatedSalary Schema Generator — Publish Occupation Pay Bands

    Generate valid Occupation + MonetaryAmountDistribution JSON‑LD with currency, unit (YEAR/HOUR), and percentile values to clarify salary expectations.

    Why many salary pages underperform

    Pain points we solve

    • Salary info is presented in prose without structured percentiles.
    • Currency and unitText are missing or inconsistent across pages.
    • No location context (occupationLocation) makes values misleading.
    • Manual JSON‑LD is inconsistent across occupation pages.

    How SwiftSchema helps

    Solution

    The generator guides an Occupation with a MonetaryAmountDistribution for `estimatedSalary` including currency, unitText (YEAR/HOUR/MONTH), and percentiles (median encouraged).

    It supports occupationLocation (Place/AdministrativeArea), keywords, and identifiers when needed, producing copy‑ready JSON‑LD for occupation pages.

    How it works

    How it works

    1. Choose EstimatedSalary in the generator below.
    2. Enter Occupation `name` and optional `description`.
    3. Add `occupationLocation` to scope values to a region or country.
    4. Provide `estimatedSalary` with currency, unitText, and percentiles (median + others when available).
    5. Copy JSON or Script, paste into the occupation page, and validate in the Rich Results Test.
    Generate EstimatedSalary JSON‑LD

    Paste once per occupation page. Validate. Ship.

    What is EstimatedSalary structured data?

    EstimatedSalary pairs Occupation with a MonetaryAmountDistribution to express currency, unit (YEAR/HOUR/MONTH), and percentile values for salary estimates.

    Essential elements

    1. Occupation
      — includes
      name
      , optional
      description
      ,
      occupationLocation
      .
    2. estimatedSalary
      — a
      MonetaryAmountDistribution
      with
      currency
      ,
      unitText
      , and percentiles (
      median
      ,
      percentile10/25/75/90
      ).
    3. occupationLocation
      — Place or AdministrativeArea (city, state, country) explaining where the salary applies.
    4. mainEntityOfPage
      — link to the canonical occupation page.
    5. identifier
      /
      sameAs
      — include job codes (SOC, ONET) or external references.
    6. datePublished
      /
      dateModified
      — optional; note when the salary estimate was last updated.
    7. provider
      — optional; mention the data source (job board, internal survey).
    8. description
      — explain methodology or scope.

    Content prep checklist

    • Gather median and percentile data for each occupation (source: surveys, job board data).
    • Decide on the geographic scope (country, state, city) and note it on the page.
    • Specify whether salaries include benefits, bonuses, or base pay only.
    • Provide context on methodology (“Based on 5,000 job postings from 2024”).
    • Include disclaimers about variability and data freshness.
    • Link to job postings, employer profiles, or related occupations for additional context.

    Implementation workflow

    1. Create or update the occupation page with the salary info, methodology, and location context.
    2. Generate Occupation JSON‑LD with
      name
      ,
      description
      ,
      occupationLocation
      , and
      estimatedSalary
      .
    3. Fill in MonetaryAmountDistribution with
      currency
      ,
      unitText
      ,
      median
      , and other percentiles.
    4. Add metadata such as
      identifier
      ,
      sameAs
      ,
      provider
      , and
      mainEntityOfPage
      .
    5. Embed the schema once per occupation page.
    6. Validate using Rich Results Test; pay attention to warnings about missing median or invalid unitText.
    7. Monitor Search Console for job/occupation enhancements if available.

    Location and currency considerations

    • Use ISO currency codes (USD, EUR) and match the displayed currency.
    • For multi-country pages, consider separate pages per region to avoid mixing currencies/rates.
    • When listing multiple cities on one page, provide separate Occupation entries or clearly note differences in the content.
    • Mention data sources when referencing aggregated platforms (e.g., “Based on SwiftSchema job postings”).

    Complementing JobPosting and Employer data

    • Link to JobPosting schema for relevant listings; highlight salary ranges from real job postings when available.
    • Pair with EmployerAggregateRating to provide employer reputation context.
    • Use breadcrumbs and internal links so occupation pages feed traffic to related job listings or training courses.

    Troubleshooting checklist

    • Missing median: include
      median
      value; if unavailable, reconsider publishing.
    • Wrong units: ensure
      unitText
      is uppercase (YEAR, HOUR, MONTH).
    • Ambiguous region: add
      occupationLocation
      with Place/AdministrativeArea.
    • Stale data: update
      dateModified
      and salary values regularly (quarterly recommended).
    • Insufficient data: if sample size is small, mention it in the description to avoid misleading readers.

    Common Errors & Fixes

    • Missing median: include at least the median; add other percentiles when possible.
    • Wrong units: use
      unitText
      in uppercase (YEAR/HOUR/MONTH).
    • Ambiguous region: add
      occupationLocation
      to avoid misleading global values.

    Required properties

    • Occupation.name
    • Occupation.estimatedSalary.currency
    • Occupation.estimatedSalary.unitText
    • Occupation.estimatedSalary.median

    Recommended properties

    • Occupation.description
    • Occupation.occupationLocation.name
    • Occupation.mainEntityOfPage
    • Occupation.estimatedSalary.percentile10
    • Occupation.estimatedSalary.percentile25
    • Occupation.estimatedSalary.percentile75
    • Occupation.estimatedSalary.percentile90
    Occupation with Salary Distribution
    Validate
    {
      "@context": "https://schema.org",
      "@type": "Occupation",
      "name": "Frontend Engineer",
      "description": "Salary estimates for frontend software engineers.",
      "occupationLocation": {
        "@type": "AdministrativeArea",
        "name": "United States"
      },
      "estimatedSalary": {
        "@type": "MonetaryAmountDistribution",
        "currency": "USD",
        "unitText": "YEAR",
        "percentile10": 65000,
        "percentile25": 85000,
        "median": 110000,
        "percentile75": 140000,
        "percentile90": 170000
      }
    }

    FAQs

    How do I structure salary estimates?Show
    Use an `Occupation` with `estimatedSalary` as a `MonetaryAmountDistribution` that specifies currency, unitText (e.g., YEAR or HOUR), and percentiles (10/25/50/75/90).
    Is median required?Show
    Median is the most important percentile. It’s strongly recommended to include median and as many other percentile values as available.
    How do I set the location for estimates?Show
    Use `occupationLocation` with a `Place` or `AdministrativeArea` and a `name` (for example, a city, state, or country).
    What units can I use?Show
    Use `unitText` values like YEAR, HOUR, or MONTH (uppercase). Make sure values are numeric and currency codes are valid (e.g., USD, EUR).

    Generate Estimated Salary schema

    Fill in page details, copy JSON or Script, and validate.

      Schema Type

      💵 Estimated Salary Schema Generator

      Publish salary estimates for occupations with currency, unit, and percentiles using Occupation + MonetaryAmountDistribution. Helps qualify for salary estimate features.

      Simple Range (MonetaryAmount)
      Distribution (MonetaryAmountDistribution)

      Generated Schema

      Validate your schema here.