import pmxt
router = pmxt.Router(pmxt_api_key="YOUR_PMXT_API_KEY")
clusters = router.fetch_matched_market_clusters(
query="Satoshi",
relation="identity",
min_venues=2,
include_raw_matches=True,
limit=5,
)
for cluster in clusters:
venues = [market.source_exchange for market in cluster.markets]
print(cluster.canonical_title, venues)
import { Router } from "pmxtjs";
const router = new Router({ pmxtApiKey: "YOUR_PMXT_API_KEY" });
async function main() {
const clusters = await router.fetchMatchedMarketClusters({
query: "Satoshi",
relation: "identity",
minVenues: 2,
includeRawMatches: true,
limit: 5,
});
for (const cluster of clusters) {
console.log(
cluster.canonicalTitle,
cluster.markets.map((market) => market.sourceExchange),
);
}
}
main();
curl -G "https://api.pmxt.dev/v0/matched-market-clusters" \
-H "Authorization: Bearer $PMXT_API_KEY" \
--data-urlencode "query=Satoshi" \
--data-urlencode "relation=identity" \
--data-urlencode "minVenues=2" \
--data-urlencode "includeRawMatches=true" \
--data-urlencode "limit=5"
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pmxt.dev/v0/matched-market-clusters"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pmxt.dev/v0/matched-market-clusters")
.header("Authorization", "Bearer <token>")
.asString();Fetch matched market clusters
Returns connected clusters of semantically matched markets across venues. Use this endpoint to browse or anchor market-level matches without flattening the response into pairwise rows.
import pmxt
router = pmxt.Router(pmxt_api_key="YOUR_PMXT_API_KEY")
clusters = router.fetch_matched_market_clusters(
query="Satoshi",
relation="identity",
min_venues=2,
include_raw_matches=True,
limit=5,
)
for cluster in clusters:
venues = [market.source_exchange for market in cluster.markets]
print(cluster.canonical_title, venues)
import { Router } from "pmxtjs";
const router = new Router({ pmxtApiKey: "YOUR_PMXT_API_KEY" });
async function main() {
const clusters = await router.fetchMatchedMarketClusters({
query: "Satoshi",
relation: "identity",
minVenues: 2,
includeRawMatches: true,
limit: 5,
});
for (const cluster of clusters) {
console.log(
cluster.canonicalTitle,
cluster.markets.map((market) => market.sourceExchange),
);
}
}
main();
curl -G "https://api.pmxt.dev/v0/matched-market-clusters" \
-H "Authorization: Bearer $PMXT_API_KEY" \
--data-urlencode "query=Satoshi" \
--data-urlencode "relation=identity" \
--data-urlencode "minVenues=2" \
--data-urlencode "includeRawMatches=true" \
--data-urlencode "limit=5"
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pmxt.dev/v0/matched-market-clusters"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pmxt.dev/v0/matched-market-clusters")
.header("Authorization", "Bearer <token>")
.asString();Authorizations
Required when calling the hosted API directly (curl, requests, fetch). SDK users pass credentials via constructor params instead.
Query Parameters
Anchor the response to a specific market ID.
Anchor the response to a specific market slug.
Anchor the response to a specific market URL.
Text search across cluster titles.
Filter both sides of matched edges by market category.
Comma-separated relation filter. Valid values: identity (same resolution), subset (A yes implies B yes), superset (B yes implies A yes), overlap (some shared scenarios), and disjoint (mutually exclusive). Defaults to identity. For subset and superset, direction follows the pairwise edge direction returned in rawMatches when includeRawMatches=true.
Single relation filter. Alias for relations.
identity, subset, superset, overlap, disjoint 0 <= x <= 1Comma-separated venue allow-list.
Comma-separated venue deny-list.
Minimum number of venues required in a cluster.
x >= 0Require at least one live orderbook on each matched edge.
Only include matches updated after this timestamp.
Include the pairwise match edges used to build each cluster.
volume, confidence 1 <= x <= 500x >= 0Maximum number of pairwise edges to scan before clustering.
x >= 1Response
Matched market clusters.
Was this page helpful?

