XooCode(){

Demand

Demand is the buyer-side mirror of Offer. Where Offer says "I have X for sale under these terms," Demand says "I am looking to acquire X under these terms." It is an Intangible that lives alongside Offer in the GoodRelations commerce vocabulary.

Practically, Demand powers buy-side marketplaces: wanted-to-buy listings, public procurement notices, auction bids, and corporate RFPs. The property set is the same as Offer: availability (when the buyer will accept it), eligibleRegion, eligibleCustomerType, deliveryLeadTime, businessFunction (set to BuyOut or LeaseOut from the buyer's perspective), itemOffered, priceSpecification.

Full example of schema.org/Demand json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/Demand
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Demand",
  "@id": "https://xoocode.com/procurement/barcode-scanners-2026-q2",
  "name": "Wanted: refurbished 2D barcode scanners",
  "description": "Xoo Code is sourcing 40 refurbished USB 2D barcode scanners to replace box-office hardware at The Thunderdome.",
  "itemOffered": {
    "@type": "Product",
    "name": "Refurbished USB 2D Barcode Scanner",
    "category": "Retail hardware > Barcode scanners"
  },
  "businessFunction": "https://purl.org/goodrelations/v1#BuyOut",
  "availability": "https://schema.org/InStock",
  "availabilityStarts": "2026-04-15T09:00:00-04:00",
  "availabilityEnds": "2026-05-31T17:00:00-04:00",
  "eligibleQuantity": { "@type": "QuantitativeValue", "value": 40, "unitText": "units" },
  "eligibleRegion": { "@type": "Country", "name": "United States", "identifier": "US" },
  "priceSpecification": {
    "@type": "PriceSpecification",
    "maxPrice": 85,
    "priceCurrency": "USD",
    "valueAddedTaxIncluded": false
  },
  "deliveryLeadTime": { "@type": "QuantitativeValue", "minValue": 7, "maxValue": 21, "unitCode": "DAY" },
  "seller": { "@type": "Organization", "name": "Xoo Code Procurement", "url": "https://xoocode.com" }
}
</script>

Offer vs Demand in one sentence

Offer = "I will sell you this"; Demand = "I want to buy this."

Where Demand shows up

  • Reverse auctions and RFP portals.
  • Wanted-to-buy classified ads.
  • Used-goods marketplaces with buy-requests alongside listings.
  • Public procurement notices (pair with Legislation references).

Minimal valid version

The smallest markup that still produces a valid Demand entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/Demand (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Demand",
  "itemOffered": { "@type": "Product", "name": "Refurbished USB 2D Barcode Scanner" },
  "businessFunction": "https://purl.org/goodrelations/v1#BuyOut",
  "availability": "https://schema.org/InStock"
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

  • No dedicated rich result (used by procurement, classifieds, and marketplace engines)
    Google docs

Common Demand mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Demand used for a listing the site is selling

    Wrong
    Demand on a for-sale product listing
    Right
    Offer for sell-side listings; Demand only when the subject wants to buy

    Demand and Offer are opposite sides of a transaction. Mixing them breaks every marketplace consumer.

  2. 02

    businessFunction omitted on Demand

    Wrong
    Demand with no businessFunction
    Right
    Always set businessFunction (BuyOut, LeaseOut, Rent, etc.) so the transaction intent is explicit

    Offer defaults to 'Sell'; Demand needs the inverse signal explicitly.

  3. 03

    priceSpecification.price instead of maxPrice

    Wrong
    Demand.priceSpecification.price = 85 (treating 85 as firm)
    Right
    maxPrice = 85 to signal the buyer's ceiling

    On Demand, minPrice / maxPrice express the buyer's acceptable range. A single price looks like a firm offer rather than a bid ceiling.

Also mentioned in 1 other example

Demand also appears in PaymentMethod. See the full Demand schema page for every reference.

About the example data

Xoo Code's procurement arm publishing a wanted-to-buy Demand for refurbished barcode scanners to equip The Thunderdome's box office.

Comments

Loading comments...

Leave a comment