Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,11 @@ const permanentRedirectArray = [
["/pythnet-price-feeds/hermes", "/price-feeds/how-pyth-works/hermes"],
[
"/documentation/pythnet-price-feeds/scheduler",
"/price-feeds/schedule-price-updates/using-price-pusher",
],
[
"/price-feeds/schedule-price-updates/using-scheduler",
"/price-feeds/schedule-price-updates/using-price-pusher",
],
[
"/documentation/pythnet-price-feeds/off-chain",
Expand Down Expand Up @@ -121,6 +125,13 @@ const permanentRedirectArray = [
],
["/benchmarks/api-instances", "/price-feeds/api-reference/"],
["/benchmarks/rate-limits", "/price-feeds/rate-limits/"],

["/price-feeds/sponsored-feeds", "/price-feeds/push-feeds"],

[
"/price-feeds/use-real-time-data/:path((?!pull-integration(?:/|$)).*)",
"/price-feeds/use-real-time-data/pull-integration/:path",
],
];

/** @type {import('next').NextConfig} */
Expand Down
2 changes: 1 addition & 1 deletion pages/price-feeds/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"api-reference": "API Reference",
"price-feeds": "Price Feeds",
"current-fees": "Current Fees",
"sponsored-feeds": "Sponsored Feeds",
"push-feeds": "Push Feeds",
"market-hours": "Market Hours",
"best-practices": "Best Practices",
"error-codes": "Error Codes",
Expand Down
189 changes: 159 additions & 30 deletions pages/price-feeds/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ import {
LightningIcon,
MultiChainIcon,
ShieldIcon,
CodeIcon,
} from "../../components/icons/ProductIcons";
import ContractIcon from "../../components/icons/ContractIcon";
import SearchIcon from "../../components/icons/SearchIcon";
import { Cards, Card } from "nextra/components";

# Introduction to Pyth Price Feeds

Expand All @@ -14,44 +18,145 @@ Data is sourced from 120+ first-party providers including major exchanges and ma

## Key Features

- **1600+ price feeds** across all major asset classes
- **2000+ price feeds** across all major asset classes
- **Sub-second latency** with high-frequency updates
- **Cryptographically signed** and verifiable on-chain
- **Multi-chain support** including EVM, Cosmos, Solana, Aptos, and more

## Our Products

<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-8 mb-12">
{/* Real-Time Price Feeds - Two Column Layout */}

<div className="mb-12 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 shadow-sm hover:shadow-md transition-shadow overflow-hidden">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-0">
{/* Left Column - Product Information */}
<div className="p-6 border-r border-gray-200 dark:border-gray-700">
<div className="flex items-center gap-3 mb-4">
<div className="bg-blue-600 text-white text-xs font-semibold px-3 py-1.5 rounded-full">
Core
</div>
<div className="text-gray-600 dark:text-gray-400"><BarChartIcon /></div>
</div>

<h3 className="text-lg font-bold text-gray-900 dark:text-white mb-3 leading-tight">
Real-Time Price Feeds
</h3>

<p className="text-gray-700 dark:text-gray-300 text-sm mb-6 leading-relaxed">
Real-time, high-fidelity market data for smart contracts.
</p>

{/* Features */}
<div className="space-y-3 mb-6">
<div className="flex items-center gap-3">
<div className="text-blue-600 dark:text-blue-400 text-sm flex-shrink-0">
<ClockIcon />
</div>
<span className="text-gray-600 dark:text-gray-400 text-sm font-medium">
Real-time price feeds
</span>
</div>
<div className="flex items-center gap-3">
<div className="text-blue-600 dark:text-blue-400 text-sm flex-shrink-0">
<BarChartIcon />
</div>
<span className="text-gray-600 dark:text-gray-400 text-sm font-medium">
400ms frequency updates
</span>
</div>
<div className="flex items-center gap-3">
<div className="text-blue-600 dark:text-blue-400 text-sm flex-shrink-0">
<MultiChainIcon />
</div>
<span className="text-gray-600 dark:text-gray-400 text-sm font-medium">
100+ blockchains (EVM, Solana, Aptos, Sui, etc.)
</span>
</div>
</div>

<div className="flex">
<a
href="./price-feeds/use-real-time-data"
className="inline-flex items-center gap-2 bg-gray-50 dark:bg-gray-700 border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 px-4 py-2.5 rounded-md hover:bg-gray-100 dark:hover:bg-gray-600 transition-colors text-sm font-semibold"
>
Explore Price Feeds
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
</svg>
</a>
</div>
</div>

{/* Right Column - Integration Methods */}
<div className="p-6 bg-gray-50 dark:bg-gray-900">
<h4 className="text-lg font-semibold text-gray-900 dark:text-white mb-4">Integration Methods</h4>
<div className="space-y-6">
{/* Pull Integration */}
<div className="space-y-3">
<div className="flex items-center gap-3">
<div className="w-2 h-2 bg-green-500 rounded-full"></div>
<h5 className="font-medium text-gray-900 dark:text-white">Pull Integration</h5>
</div>
<p className="text-sm text-gray-600 dark:text-gray-400 ml-5">
Update 2000+ prices on-demand, permissionlessly every 400ms.
</p>
<div className="ml-5">
<a
href="./price-feeds/use-real-time-data"
className="inline-flex items-center gap-2 bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded-md transition-colors text-sm font-medium"
>
Get Started with Pull Integration
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
</svg>
</a>
</div>
</div>

{/* Push Feeds */}
<div className="space-y-3">
<div className="flex items-center gap-3">
<div className="w-2 h-2 bg-blue-500 rounded-full"></div>
<h5 className="font-medium text-gray-900 dark:text-white">Push Integration</h5>
</div>
<p className="text-sm text-gray-600 dark:text-gray-400 ml-5">
Consume Pyth real-time prices without pulling them explicitly.
</p>
<div className="ml-5">
<a
href="./price-feeds/push-feeds"
className="inline-flex items-center gap-2 bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-md transition-colors text-sm font-medium"
>
Get Started with Push Integration
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
</svg>
</a>
</div>
</div>
</div>
</div>

</div>
</div>

{/* Other Products Grid */}

<div className="grid grid-cols-1 md:grid-cols-2 gap-8 mb-12">
<ProductCard
badge="Core"
icon={<BarChartIcon />}
title="Real-Time Price Feeds"
description="Real-time, high-fidelity market data for smart contracts."
badge="Benchmarks"
icon={<ClockIcon />}
title="Historical Data"
description="Access to historical price data for settlement and backtesting."
features={[
{ icon: <ClockIcon />, text: "Real-time price feeds" },
{ icon: <BarChartIcon />, text: "High-frequency data" },
{ icon: <MultiChainIcon />, text: "Multi-chain support" }
{ icon: <BarChartIcon />, text: "Signed data" },
{ icon: <ShieldIcon />, text: "Verifiable prices" },
{ icon: <ClockIcon />, text: "Time-stamped prices" },
]}
ctaText="Explore Price Feeds"
href="./price-feeds/use-real-time-data"
ctaText="Access Historical Data"
href="./price-feeds/use-historic-price-data"
/>

{" "}

<ProductCard
badge="Benchmarks"
icon={<ClockIcon />}
title="Historical Data"
description="Access to historical price data for settlement and backtesting."
features={[
{ icon: <BarChartIcon />, text: "Signed data" },
{ icon: <ShieldIcon />, text: "Verifiable prices" },
{ icon: <ClockIcon />, text: "Time-stamped prices" },
]}
ctaText="Access Historical Data"
href="./price-feeds/use-historic-price-data"
/>

<ProductCard
badge="Lazer"
icon={<LightningIcon />}
Expand All @@ -69,6 +174,30 @@ Data is sourced from 120+ first-party providers including major exchanges and ma

## Quick Start

Follow the [Getting Started](price-feeds/getting-started.mdx) guide to integrate Pyth Price Feeds into your application.

For contract addresses and deployment details, see [Contract Addresses](./price-feeds/contract-addresses).
<Cards>
<Card
icon={<ClockIcon />}
title="Getting Started"
href="./price-feeds/getting-started"
/>
<Card
icon={<ContractIcon />}
title="Contract Addresses"
href="./price-feeds/contract-addresses"
/>
<Card
icon={<LightningIcon />}
title="Push Feeds"
href="./price-feeds/push-feeds"
/>
<Card
icon={<CodeIcon />}
title="API Reference"
href="./price-feeds/api-reference"
/>
<Card
icon={<SearchIcon />}
title="Price Feed IDs"
href="./price-feeds/price-feeds"
/>
</Cards>
37 changes: 37 additions & 0 deletions pages/price-feeds/push-feeds.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { Callout } from "nextra/components";

# Push Feeds

The Pyth Data Association **pushes** price updates for various feeds on some networks.
These feeds are updated at a specific heartbeat rate or when the price changes by a specific percentage.
Applications can depend on receiving updates for these feeds, without having to pull them explicitly.

The feeds can vary by network. Please see the relevant section below for the network of interest.

- [EVM](push-feeds/evm)
- [Solana](push-feeds/solana)
- [Fogo](push-feeds/fogo)
- [Aptos](push-feeds/aptos)
- [Movement](push-feeds/movement)
- [Sui](push-feeds/sui)

<Callout type="default" emoji="ℹ️">
Deviation thresholds can be customized to fit builders' needs, and additional
feeds can be requested for this list. If you need custom thresholds or would
like to see additional feeds, please fill in this
[form](https://tally.so/r/nGz2jj) to signal your interest.
</Callout>

<Callout type="info" emoji="ℹ️">
Push feeds are subject to change with prior notice. Please refer to the [dev-
forum](https://dev-forum.pyth.network/c/announcements/6) for the latest
changes.
</Callout>

<Callout type="info" emoji="⚠️">
DISCLAIMER: While the Pyth Data Association strives to deliver timely updates,
these push feeds may occasionally experience delays in updates caused by chain
halts, gas estimations and other issues. Applications are advised to run their
own price-pusher. Find out how you can run your own price-pusher
[here](/price-feeds/schedule-price-updates/using-price-pusher).
</Callout>
15 changes: 15 additions & 0 deletions pages/price-feeds/push-feeds/aptos.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Callout } from "nextra/components";

import { SponsoredFeedsTable } from "../../../components/SponsoredFeedsTableWithData";
import aptosMainnet from "../push-feeds/data/aptos/aptos_mainnet.json";

# Push Feeds on Aptos

## Aptos Mainnet

<Callout type="info" emoji="ℹ️">
If you would like to see additional feeds on this list, please fill in this
[form](https://tally.so/r/nGz2jj) to signal your interest.
</Callout>

<SponsoredFeedsTable feeds={aptosMainnet} networkName="Aptos mainnet" />
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
import { Callout } from "nextra/components";

import { SponsoredFeedsTable } from "../../../components/SponsoredFeedsTableWithData";
import arbitrumMainnet from "../sponsored-feeds/data/evm/arbitrum_mainnet.json";
import avalancheMainnet from "../sponsored-feeds/data/evm/avalanche_mainnet.json";
import baseMainnet from "../sponsored-feeds/data/evm/base_mainnet.json";
import berachainMainnet from "../sponsored-feeds/data/evm/berachain_mainnet.json";
import ethereumMainnet from "../sponsored-feeds/data/evm/ethereum_mainnet.json";
import hyperevmMainnet from "../sponsored-feeds/data/evm/hyperevm_mainnet.json";
import soneiumMainnet from "../sponsored-feeds/data/evm/soneium_mainnet.json";
import sonicMainnet from "../sponsored-feeds/data/evm/sonic_mainnet.json";
import lineaMainnet from "../sponsored-feeds/data/evm/linea_mainnet.json";
import arbitrumMainnet from "../push-feeds/data/evm/arbitrum_mainnet.json";
import avalancheMainnet from "../push-feeds/data/evm/avalanche_mainnet.json";
import baseMainnet from "../push-feeds/data/evm/base_mainnet.json";
import berachainMainnet from "../push-feeds/data/evm/berachain_mainnet.json";
import ethereumMainnet from "../push-feeds/data/evm/ethereum_mainnet.json";
import hyperevmMainnet from "../push-feeds/data/evm/hyperevm_mainnet.json";
import soneiumMainnet from "../push-feeds/data/evm/soneium_mainnet.json";
import sonicMainnet from "../push-feeds/data/evm/sonic_mainnet.json";
import lineaMainnet from "../push-feeds/data/evm/linea_mainnet.json";

# Sponsored Feeds on EVM
# Push Feeds on EVM

The following EVM chains have sponsored price feeds:
The following EVM chains have push feeds:

- [Arbitrum Mainnet](#arbitrum-mainnet)
- [Avalanche Mainnet](#avalanche-mainnet)
Expand All @@ -23,6 +25,11 @@ The following EVM chains have sponsored price feeds:
- [Soneium Mainnet](#soneium-mainnet)
- [Sonic Mainnet](#sonic-mainnet)

<Callout type="info" emoji="ℹ️">
If you would like to see additional feeds on this list, please fill in this
[form](https://tally.so/r/nGz2jj) to signal your interest.
</Callout>

## Arbitrum Mainnet

<SponsoredFeedsTable feeds={arbitrumMainnet} networkName="Arbitrum mainnet" />
Expand Down
15 changes: 15 additions & 0 deletions pages/price-feeds/push-feeds/fogo.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Callout } from "nextra/components";

import { SponsoredFeedsTable } from "../../../components/SponsoredFeedsTableWithData";
import fogoTestnet from "../push-feeds/data/svm/fogo_testnet.json";

# Push Feeds on Fogo

## Fogo Testnet

<Callout type="info" emoji="ℹ️">
If you would like to see additional feeds on this list, please fill in this
[form](https://tally.so/r/nGz2jj) to signal your interest.
</Callout>

<SponsoredFeedsTable feeds={fogoTestnet} networkName="Fogo testnet" />
15 changes: 15 additions & 0 deletions pages/price-feeds/push-feeds/movement.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Callout } from "nextra/components";

import { SponsoredFeedsTable } from "../../../components/SponsoredFeedsTableWithData";
import movementMainnet from "../push-feeds/data/movement/movement_mainnet.json";

# Push Feeds on Movement

## Movement Mainnet

<Callout type="info" emoji="ℹ️">
If you would like to see additional feeds on this list, please fill in this
[form](https://tally.so/r/nGz2jj) to signal your interest.
</Callout>

<SponsoredFeedsTable feeds={movementMainnet} networkName="Movement mainnet" />
Loading
Loading