NEWWorld's first AI visibility audit tool for Web3 is live.Run free audit →
Audit module · 04 · Reference + Tool

Token schema audit. The complete reference for crypto JSON-LD.

Crypto sites need schema.org markup that search engines and AI models actually understand: FinancialProduct, CryptoExchange, SoftwareApplication and crypto-aware Organization data. This is both the audit module and the open reference. Copy what you need, run the audit when you want it validated end-to-end.

5 schema types7 protocol templatesValidated against schema.org & Google Rich Results

By the numbers

63%of crypto sites we audit ship zero crypto-specific schema. Most have only generic WebSite or BreadcrumbList markup.Illustrative figure based on TG3 client audit patterns
~12sto ship a complete FinancialProduct JSON-LD block from this library to a Next.js page using the App Router metadata API.Time-to-paste, not time-to-validate
+18ptsaverage AEO score lift after shipping FinancialProduct + Organization sameAs schema on a Web3 site.Illustrative; varies materially by site
// The library

Copy-paste JSON-LD for the seven most common crypto patterns

Each example is annotated with what every field does, why it matters and the most common mistake we flag in audits. Pick the pattern that matches your site, paste it, fill in your real values.

Pattern · DeFi lending pool

FinancialProduct for a lending market

Use this on the page representing a single lending market or pool (e.g. /markets/usdc or /pools/aave-eth). The Aave-style pattern: one FinancialProduct per market, each pointing back to the protocol Organization as provider.

Common mistakes we flag

  • Putting all markets in one FinancialProduct entity instead of one per market
  • Hardcoding interestRate as a number instead of a QuantitativeValue with unit
  • Missing feesAndCommissionsSpecification (rich result eligibility lost)
  • provider as a plain string instead of an Organization reference
defi-lending-market.jsonld
{
  "@context": "https://schema.org",
  "@type": "FinancialProduct",
  "@id": "https://example.com/markets/usdc#product",
  "name": "USDC Lending Market",
  "description": "Supply USDC to earn variable yield. Borrow USDC against ETH or BTC collateral.",
  "category": "Decentralized lending",
  "interestRate": {
    "@type": "QuantitativeValue",
    "value": 4.82,
    "unitText": "PERCENT_PER_YEAR",
    "valueReference": "Variable APY, updated per block"
  },
  "feesAndCommissionsSpecification": "Reserve factor: 10%. No deposit or withdrawal fees. Borrowers pay variable interest set by utilization curve.",
  "provider": {
    "@type": "Organization",
    "@id": "https://example.com/#organization",
    "name": "Example Protocol",
    "url": "https://example.com/"
  },
  "audience": {
    "@type": "Audience",
    "audienceType": "DeFi users with self-custody wallets"
  },
  "areaServed": "Worldwide, subject to jurisdictional restrictions"
}
Pattern · Decentralized exchange

CryptoExchange for a DEX

For a swap interface (Uniswap, Curve, PancakeSwap pattern). Use CryptoExchange on the protocol's main page and per-pool pages. The supportedAssets array is what disambiguates "AAVE the token" from "Aave the protocol" for AI models.

Common mistakes we flag

  • Using FinancialProduct instead of CryptoExchange for swap interfaces
  • Empty supportedAssets array (the most valuable field for crypto)
  • Hardcoding fee as a string instead of feesAndCommissionsSpecification
  • Missing currenciesAccepted, which AI models use heavily
dex-swap.jsonld
{
  "@context": "https://schema.org",
  "@type": "CryptoExchange",
  "@id": "https://example.com/#exchange",
  "name": "Example DEX",
  "description": "Decentralized AMM exchange supporting ETH, ERC-20 and bridged assets across L2s.",
  "url": "https://example.com/",
  "currenciesAccepted": ["ETH", "USDC", "USDT", "DAI", "WBTC"],
  "supportedAssets": [
    { "@type": "Thing", "name": "Ethereum (ETH)", "sameAs": "https://www.coingecko.com/en/coins/ethereum" },
    { "@type": "Thing", "name": "USD Coin (USDC)", "sameAs": "https://www.coingecko.com/en/coins/usd-coin" }
  ],
  "feesAndCommissionsSpecification": "Swap fee: 0.30% per trade, paid to liquidity providers. No protocol fee. Gas paid by user.",
  "areaServed": "Worldwide, excluding sanctioned jurisdictions",
  "provider": { "@id": "https://example.com/#organization" }
}
Pattern · Liquid staking derivative

FinancialProduct for liquid staking (Lido / Rocket Pool pattern)

For staking products that mint a derivative (stETH, rETH). Use FinancialProduct with the staking yield as interestRate. Make the derivative token explicit in the description because AI models otherwise conflate it with the underlying.

Common mistakes we flag

  • Listing the underlying asset (ETH) instead of the derivative (stETH) as the product
  • Missing rebasing or reward mechanism description
  • No exit / unstaking time disclosure (a major user concern AI models surface)
  • provider sameAs missing the validator set page
liquid-staking.jsonld
{
  "@context": "https://schema.org",
  "@type": "FinancialProduct",
  "name": "Liquid Staked ETH (stETH)",
  "description": "Stake ETH and receive stETH, a liquid derivative that accrues staking rewards via daily rebases. Tradable on DEXs and usable as DeFi collateral.",
  "category": "Liquid staking derivative",
  "interestRate": {
    "@type": "QuantitativeValue",
    "value": 3.4,
    "unitText": "PERCENT_PER_YEAR",
    "valueReference": "Variable APR based on Ethereum validator rewards"
  },
  "feesAndCommissionsSpecification": "Protocol fee: 10% of staking rewards. No staking minimum. No lock-up; unstake via withdrawal queue (typically 1-5 days) or swap stETH on a DEX instantly.",
  "provider": { "@id": "https://example.com/#organization" },
  "audience": {
    "@type": "Audience",
    "audienceType": "ETH holders seeking yield without running a validator"
  }
}
Pattern · NFT marketplace

CryptoExchange + Product hybrid for NFT marketplace

NFT marketplaces sit awkwardly in schema.org. We recommend CryptoExchange for the marketplace itself plus Product schema on individual collection or item pages. supportedAssets becomes the supported chains.

Common mistakes we flag

  • Generic WebSite schema instead of CryptoExchange on the marketplace homepage
  • Missing chain support in supportedAssets (Ethereum, Polygon, Solana, etc.)
  • Royalty fee disclosure absent from feesAndCommissionsSpecification
  • Per-collection pages with no Product schema
nft-marketplace.jsonld
{
  "@context": "https://schema.org",
  "@type": "CryptoExchange",
  "name": "Example NFT Market",
  "description": "NFT marketplace for digital art, gaming items and collectibles across Ethereum, Polygon and Base.",
  "url": "https://example.com/",
  "currenciesAccepted": ["ETH", "MATIC", "USDC"],
  "supportedAssets": [
    { "@type": "Thing", "name": "Ethereum NFTs (ERC-721, ERC-1155)" },
    { "@type": "Thing", "name": "Polygon NFTs" },
    { "@type": "Thing", "name": "Base NFTs" }
  ],
  "feesAndCommissionsSpecification": "Marketplace fee: 2.5% of sale. Creator royalties enforced on-chain per collection. Gas paid by user."
}
Pattern · Self-custody wallet

SoftwareApplication for a Web3 wallet

For self-custody wallets, hardware wallets and mobile crypto wallets. SoftwareApplication is the right type because the wallet is software, not a financial product. Add operatingSystem and offers explicitly so app store rich results work.

Common mistakes we flag

  • Using Product instead of SoftwareApplication (loses app rich result eligibility)
  • Missing operatingSystem field
  • No applicationCategory (FinanceApplication is the right value for wallets)
  • aggregateRating without supporting reviewCount that matches actual reviews
crypto-wallet.jsonld
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Example Wallet",
  "description": "Self-custody multi-chain wallet for Ethereum, Solana, Bitcoin and 30+ EVM networks. Built-in dApp browser and hardware wallet support.",
  "applicationCategory": "FinanceApplication",
  "applicationSubCategory": "Cryptocurrency wallet",
  "operatingSystem": "iOS, Android, macOS, Windows, Linux",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "USD"
  },
  "featureList": [
    "Self-custody seed phrase storage",
    "Multi-chain support across 30+ EVM networks",
    "WalletConnect v2 dApp integration",
    "Hardware wallet support (Ledger, Trezor)"
  ],
  "publisher": { "@id": "https://example.com/#organization" }
}
Pattern · Centralized exchange

CryptoExchange + Organization for a CEX

For centralized exchanges (Binance, Coinbase, Kraken pattern). CryptoExchange schema with full regulatory disclosure inside feesAndCommissionsSpecification and areaServed. AI models pull jurisdiction info from these fields heavily.

Common mistakes we flag

  • Vague areaServed like "Global" without listing excluded jurisdictions
  • Missing regulatory licenses in the description
  • currenciesAccepted as a free-text string instead of array
  • No Organization sameAs to corporate registry or regulator listing
cex.jsonld
{
  "@context": "https://schema.org",
  "@type": "CryptoExchange",
  "name": "Example Exchange",
  "description": "Regulated centralized cryptocurrency exchange. Spot trading, margin and futures across 200+ assets. Licensed in EU (MiCA) and registered with FinCEN as an MSB.",
  "url": "https://example.com/",
  "currenciesAccepted": ["USD", "EUR", "GBP", "BTC", "ETH", "USDT", "USDC"],
  "feesAndCommissionsSpecification": "Spot trading: 0.10% maker / 0.20% taker. Volume tiers reduce to 0.00% / 0.04%. Withdrawal fees vary by network. Full schedule at /fees.",
  "areaServed": ["European Union", "United Kingdom", "Australia", "Canada"],
  "provider": { "@id": "https://example.com/#organization" }
}
Pattern · Protocol Organization + founder Person

Organization + Person with full sameAs chain

This is the schema we audit hardest in YMYL terms. Organization with sameAs to GitHub, Twitter, CoinGecko, DefiLlama and audit firm reports. Person founders with their own sameAs chain. Both nest under the @graph for the homepage.

Common mistakes we flag

  • Organization sameAs missing CoinGecko or DefiLlama (huge AEO miss)
  • Founder Person schema absent on /team/ pages
  • sameAs URLs that 404 or redirect (the audit checks every link)
  • Audit firm citations as plain links rather than as sameAs targets
org-and-founder.jsonld
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://example.com/#organization",
      "name": "Example Protocol",
      "url": "https://example.com/",
      "logo": "https://example.com/logo.png",
      "sameAs": [
        "https://twitter.com/exampleprotocol",
        "https://github.com/exampleprotocol",
        "https://discord.gg/exampleprotocol",
        "https://www.coingecko.com/en/coins/example",
        "https://defillama.com/protocol/example",
        "https://github.com/exampleprotocol/audits"
      ],
      "founder": { "@id": "https://example.com/team/jane-doe#person" }
    },
    {
      "@type": "Person",
      "@id": "https://example.com/team/jane-doe#person",
      "name": "Jane Doe",
      "jobTitle": "Co-founder & CTO, Example Protocol",
      "description": "Smart contract engineer. Previously security researcher at OpenZeppelin. Lead author of Example Protocol's lending architecture.",
      "sameAs": [
        "https://twitter.com/janedoe",
        "https://github.com/janedoe",
        "https://www.linkedin.com/in/janedoe"
      ],
      "worksFor": { "@id": "https://example.com/#organization" }
    }
  ]
}
// What an audit finding looks like

A typical token schema finding from a Crawlux audit

This is roughly what each schema issue looks like in the PDF report. Severity rating, root cause, the fix and the JSON-LD snippet ready to ship.

● HIGHFinding 04 of 23 · Token Schema
example-protocol.com / markets/usdc

FinancialProduct schema missing on lending market pages

All 14 lending market pages on the domain are missing FinancialProduct JSON-LD. Only generic WebPage schema is present.

  • Search engines and AI models cannot identify the page as a lending product
  • The asset being lent and the interest rate are not machine-readable
  • Rich result eligibility for FinancialProduct is lost
  • AEO citation likelihood drops on queries like "best USDC lending APY"
SeverityHigh · ranking + AEO impact
Effort~1 hour · template-able
Pages affected14 lending markets

→ Recommended fix

Add a FinancialProduct JSON-LD block to each market page using the DeFi Lending pattern from the schema library above. Pull interestRate dynamically from your existing rate oracle. Reference the protocol Organization via @id rather than inlining provider data.

Illustrative finding based on common patterns observed in TG3 client audits, not a real Crawlux scan output.
// Crawlux vs the alternatives

Crawlux vs Schema.org Validator vs generic SEO tools

Three things you might use for crypto schema validation today. Here is what each catches, side by side, on the dimensions that matter for a Web3 site.

CapabilitySchema.org ValidatorGoogle Rich Results TestAhrefs / SemrushCrawlux
Validates JSON-LD syntactically Strict Strict~ Surface only Strict
Validates FinancialProduct + CryptoExchange specifically~ Generic only Not crypto-aware Crypto-tuned
Audits whole domain at once One URL One URL
Per-page schema coverage map~
Verifies sameAs URLs return 200
Validates supportedAssets + currenciesAccepted~ Field exists, no value check
Detects FinancialProduct used where CryptoExchange belongs
Per-token / per-pool entity recognition
JSON-LD vs Microdata vs RDFa coexistence audit~~
SPA / client-side schema render check~ Single URL
Recommends exact fix with copy-paste snippet
PDF report with prioritized fixes~ Generic export
PricingFreeFree$99-449/mo subscription$0 / $25 / $49 per audit
// How the audit runs

What happens when you run the token schema audit

Four sequential checks. The whole module typically completes in under 12 seconds, running in parallel with the seven other audit modules.

  1. 01

    Fetch & render

    Headless Chrome fetches every URL discovered by the crawl module. JavaScript renders fully. We extract all script[type="application/ld+json"] blocks, plus any inline microdata or RDFa for cross-checking.

  2. 02

    Parse & classify

    Each JSON-LD block is parsed against schema.org. We classify each entity by @type and tag the page by the schema combinations present. Entities not in schema.org are flagged but not penalized.

  3. 03

    Crypto-specific validation

    FinancialProduct, CryptoExchange and SoftwareApplication entities run through additional rules tuned for Web3. Missing supportedAssets, malformed interestRate and provider mismatches all flagged here.

  4. 04

    sameAs liveness check

    Every sameAs URL on Organization and Person entities is fetched. Dead links (404, 410, redirect chains) flagged. CoinGecko, DefiLlama and CoinMarketCap profile URLs cross-checked for entity match.

// Token schema FAQ

Schema questions, answered

Common questions from devs and SEO teams shipping schema on crypto sites.

What schema types do crypto sites need?

Most crypto sites need a combination of FinancialProduct (for DeFi protocols, lending, yield, staking), CryptoExchange (for DEXs and CEXs), SoftwareApplication (for wallets and dApps), Organization (for the company entity with sameAs links), Person (for founders and authors) and FAQPage (for documentation and product pages). Each schema type signals different facts to search engines and AI models.

The library above covers the seven most common patterns we ship for clients.

Is FinancialProduct the right schema for a DeFi protocol?

FinancialProduct is the closest schema.org type for most DeFi products, including lending pools, yield vaults and staking products. It supports interestRate, feesAndCommissionsSpecification and provider fields that map well to DeFi. For pure swap/exchange products, use CryptoExchange instead. For protocol governance tokens themselves, the schema community is still settling on best practice; most sites use a combination of FinancialProduct on the product page and Organization on the protocol's main page.

Will Google ignore my schema if I use the wrong type?

Google does not penalize incorrect schema, but it will ignore markup that does not validate or that misuses required fields. The bigger risk is rich result eligibility: a malformed FinancialProduct will not earn the rich result. AI models like ChatGPT and Perplexity are even stricter; they tend to ignore JSON-LD that does not parse cleanly, which means your factual data does not influence answers. Validating with Schema.org Validator and Google's Rich Results Test is essential.

Should JSON-LD be in the head or body?

Either works for Google, but head is the standard. Place schema in <script type="application/ld+json"> tags in the document head where possible. For SPA sites where schema is generated client-side, ensure the JSON-LD is rendered before Googlebot times out (within ~5 seconds) or use server-side rendering. Crawlux flags pages where schema is injected late or only client-side.

How do I add schema to a Next.js or React Web3 site?

For Next.js, the cleanest approach is per-page schema using next/head or the App Router's metadata API, with the schema object stringified into a script tag. For React SPAs, use react-helmet-async to inject schema into the document head. The critical thing is that schema must be in the rendered HTML, not just hydrated client-side, otherwise AI crawlers and many SEO tools will miss it.

What is sameAs and why does it matter for crypto?

sameAs is an Organization or Person property that links your entity to its profiles on other sites. For crypto, sameAs should point to your Twitter, GitHub, Discord, CoinGecko, CoinMarketCap, DefiLlama and other recognized authority sources. This is one of the strongest authority signals you can ship and directly influences AI citation likelihood. Crawlux's audit specifically checks each sameAs URL returns 200 and that the linked profile is consistent with your brand.

Can multiple JSON-LD blocks coexist on one page?

Yes. A single page can have multiple JSON-LD script blocks, or a single block with @graph containing multiple entities. The @graph approach is cleaner and usually preferred. A typical DeFi product page might combine FinancialProduct (the product), Organization (the protocol), BreadcrumbList (the navigation) and FAQPage (the product FAQ) in one @graph block. Crawlux validates each entity independently and reports per-entity issues.

Do I need schema if my site already ranks?

Schema is increasingly important for AI search even when traditional SEO is fine. ChatGPT, Perplexity and Claude all use structured data heavily when deciding which sources to cite. A site that ranks #1 in Google can still be invisible in AI answers if its JSON-LD is missing or wrong. For crypto specifically, where the AI search share is growing fast, missing schema increasingly costs traffic that Google rankings alone do not capture.

RUN THIS AUDIT FREE

Run this audit on your crypto site.

No signup, no credit card. Full 8-module report in 60 seconds.

Free first audit · No signup · 60 seconds · Full PDF report