On-demand tools for AI agents.
OpenVerbs is a catalog of small HTTP tools for AI agents. Each tool does one job and returns JSON in one request. Agents pay per successful call over x402 or MPP. No accounts, no API keys, no subscriptions.
- Pay as you go. Pay only for successful calls, settled in USDC on Base. No plans, minimums, or invoices.
- Two payment rails, one URL. x402 and MPP are served from the same endpoint, so agents can use the rail they support.
- One request, one JSON answer. Each tool runs synchronously and returns a result without polling, jobs, or callbacks.
- Invalid input is free. Malformed requests are rejected with a 400 before any charge. A valid no-match returns 200 as a normal result.
How it works
Every verb is a small HTTP tool with a POST endpoint on its own subdomain. A call that carries payment runs once and returns 200 in a single request. A call without payment returns 402 Payment Required with x402 and MPP terms in the headers, so a client can learn the price, pay, and continue. Malformed input is rejected with a free 400 before any payment.
Read the terms
Fetch /.well-known/x402 or /openapi.json for any verb to learn its operations and price. No payment needed.
Settle per call
Your x402 or MPP client pays the exact USDC price for that one request. Nothing to sign up for.
Get your answer
The tool runs synchronously and returns a JSON result. A well-formed no-match is a successful 200, never an error.
Quick start
Point an x402 or MPP client at any tool URL. The endpoint is the same for both rails, and a primed client pays in a single request. Here is the shape of a paid call:
# 1) Discover terms once, for free (x402 or MPP) curl https://hash.openverbs.com/.well-known/x402 curl https://hash.openverbs.com/.well-known/mpp # 2) Pay + call in one request. Your client attaches the payment header. # x402: X-PAYMENT (serve-then-settle). MPP: Authorization: Payment (pay-then-serve). curl -X POST https://hash.openverbs.com/v1/hash \ -H 'content-type: application/json' \ -d '{ ... }' # -> 200 with the result. A call with no payment header returns 402 + terms.
The catalog
411 operations across 91 tools and 16 categories. Search by tool, endpoint, title, description, or category, or filter by category, then open the OpenAPI document for details.
business
gleif
gleif.openverbs.com
3 endpoints
| |
|---|---|
/v1/lookupLook up a legal entity by LEI Resolve a 20-character Legal Entity Identifier (LEI, ISO 17442) to its authoritative entity record: verified legal name, registration status (ISSUED/LAPSED/RETIRED), entity status, jurisdiction, legal form, registration number, legal and headquarters addresses, key dates (registration, last update, next renewal), managing LOU, corroboration level and any BIC codes. ISO 7064 check digits are verified before payment. Inputslei*string
Returns
{ lei, found, legalName, registrationStatus, entityStatus, jurisdiction, legalForm, registeredAs, category, country, legalAddress, headquartersAddress, initialRegistrationDate, lastUpdateDate, nextRenewalDate, managingLou, corroborationLevel, bic, source, stale, cachedAt? } |
$0.006 |
/v1/searchSearch entities by legal name Find Legal Entity Identifiers by legal name, optionally filtered to an ISO 3166-1 alpha-2 country. Returns matching entities with their LEI, verified legal name, registration status, jurisdiction and city/country - the reverse of lookup, for when you have a company name but need its authoritative LEI and legal identity. Inputsname*stringcountrystringlimitinteger
Returns
{ query, country, count, total, results: [{ lei, legalName, registrationStatus, jurisdiction, country, city }], source, stale, cachedAt? } |
$0.006 |
/v1/parentsCorporate parents by LEI Resolve a legal entity's direct and ultimate accounting-consolidating parents from GLEIF's global CC0 LEI registry. Returns parent names and LEIs, relationship status, corroboration and explicit reporting exceptions. Useful for counterparty and corporate-group diligence. Not beneficial-owner identities or ownership percentages. LEI checksum validated before payment; stale results flagged. Inputslei*string
Returns
{ lei, found, legalName, asOf, directParent, ultimateParent, source, stale, cachedAt? }. Each parent reports status, LEI/name/country, relationship type/status, lastUpdated, corroborationLevel and exceptionReason/exceptionReference. Nonreporting is not proof of no owner |
$0.006 |
products
products.openverbs.com
4 endpoints
| |
/v1/amazon-searchAmazon Product Search API Amazon product search API - search Amazon products / find products on Amazon by keyword (US). Live Amazon product data: ranked listings with ASIN, title, product URL, image, price range, currency, star rating, review count and Amazon's Choice / Best Seller flags. No matches returns empty results. Inputsq*stringlimitinteger
Returns
The total and ranked results, each with rank, asin, title, url and (where present) image, priceFrom, priceTo, currency, rating, reviews, isAmazonChoice, isBestSeller, boughtPastMonth |
$0.006 |
/v1/amazon-productAmazon Product Detail API (ASIN lookup) Amazon product detail API (US) by ASIN - Amazon product data for one ASIN: title, product URL, image, price range, discount, currency, star rating, review count, category path, availability and description. Amazon prices and product-detail lookup. Unknown ASIN returns found=false. Inputsasin*string
Returns
found, asin, title and (where present) url, image, parentAsin, priceFrom, priceTo, discountPercent, currency, rating, reviews, isAmazonChoice, isAvailable, categories, description, details |
$0.006 |
/v1/amazon-sellersAmazon Offers & Sellers API Amazon offers & sellers API (US) by ASIN: the buy-box winner plus third-party sellers, each with seller name, price, regular price, discount, condition (new/used), ships-from and seller rating. Amazon offers and sellers for buy-box tracking and price comparison. No offers returns empty results. Inputsasin*string
Returns
asin, total and offers, each with rank, seller, isBuyBox and (where present) sellerUrl, shipsFrom, condition, conditionNote, price, regularPrice, discountPercent, currency, displayedPrice, rating, reviews |
$0.006 |
/v1/google-shoppingGoogle Shopping Product Search API Google Shopping product search API - search Google Shopping by keyword (US) and get ranked product offers across sellers. Live Google Shopping data: title, product URL, image, seller, price, currency, star rating, review count, Google product id and delivery info. Compare product prices across merchants. No matches returns empty results. Inputsq*stringlimitinteger
Returns
The total and ranked results, each with rank, title and (where present) productId, url, image, seller, price, currency, rating, reviews, delivery |
$0.006 |
seo
seo.openverbs.com
24 endpoints
| |
/v1/keyword-ideasKeyword ideas & search volume Keyword ideas API: discover related keyword ideas from a seed keyword for keyword research, each with Google monthly search volume, CPC, competition, keyword difficulty and search intent. For content planning and SEO research. No ideas returns empty results. Inputskeyword*stringlimitintegerlocationCodeintegerlanguageCodestring
Returns
The seed, total and results, each with keyword and (where present) volume, cpc, competition, competitionLevel, difficulty, intent, trendYoyPct |
$0.04 |
/v1/related-keywordsRelated keywords (SERP expansion) Related keywords API - expand a seed keyword using Google's "searches related to" graph, returning the related keywords (traversed to a configurable depth) each with monthly search volume, CPC, competition, keyword difficulty and search intent, plus the further related terms branching off each. For content-cluster planning and keyword discovery. No matches returns empty results. Inputskeyword*stringdepthintegerlimitintegerlocationCodeintegerlanguageCodestring
Returns
The seed, total and results, each with keyword and (where present) volume, cpc, competition, competitionLevel, difficulty, intent, trendYoyPct, depth and relatedKeywords |
$0.04 |
/v1/keyword-variationsKeyword variations from a seed phrase Keyword variations API: expand a seed phrase into keywords containing that phrase, such as 'running shoes' into 'running shoes for women'. Each includes Google monthly search volume, CPC, competition, keyword difficulty and search intent. No matches returns empty results. Inputskeyword*stringlimitintegerlocationCodeintegerlanguageCodestring
Returns
The seed, total and results, each with keyword and (where present) volume, cpc, competition, competitionLevel, difficulty, intent, trendYoyPct |
$0.04 |
/v1/keyword-suggestionsKeyword suggestions for a website Keyword suggestions API: discover keywords to target from a website or page using Google Ads Keyword Planner data, with monthly search volume, CPC, advertising competition, bid estimates and monthly search history. Unlike ranked-keywords, these are suggestions, not existing rankings. Returns up to 100 keywords. No data returns empty results. Inputstarget*stringtargetTypestringlimitintegerlocationCodeintegerlanguageCodestring
Returns
target, targetType, total available suggestions, returned count, and results with keyword, volume, cpc, competitionLevel, competitionIndex, lowTopOfPageBid, highTopOfPageBid and monthlySearches[{year,month,volume}]. Missing metrics are null. Advertising competition is not SEO difficulty |
$0.15 |
/v1/keyword-overviewKeyword metrics overview Keyword volume API: get exact SEO metrics for a list of keywords you already have: Google monthly search volume, CPC, competition, keyword difficulty and search intent for each. For prioritising a keyword list. Unknown keywords are omitted. Inputskeywords*arraylocationCodeintegerlanguageCodestring
Returns
The total and results, each with keyword and (where present) volume, cpc, competition, competitionLevel, difficulty, intent, trendYoyPct |
$0.04 |
/v1/keyword-volume-historyKeyword search-volume history (monthly) Keyword volume history API: get Google monthly search volume history for a list of keywords, back to 2019: a per-keyword month-by-month search-volume time series plus current CPC and competition. For spotting seasonality, demand trends and momentum that a single keyword-overview snapshot misses. Up to 10 keywords per call; unknown keywords are omitted. Inputskeywords*arraylocationCodeintegerlanguageCodestring
Returns
The total and results, each with keyword, history (an array of { date: "YYYY-MM", volume } sorted oldest-first) and (where present) current volume, cpc, competition, competitionLevel |
$0.15 |
/v1/search-intentKeyword search intent Classify the search intent behind keywords: for each keyword, the dominant intent (informational, navigational, commercial or transactional) with a probability, plus any secondary intents. For mapping a keyword list to funnel stage and content type. Up to 1000 keywords per call. Inputskeywords*arraylanguageCodestring
Returns
The total and results, each with keyword, the dominant intent and probability, and (where present) secondaryIntents (each label + probability) |
$0.03 |
/v1/keyword-difficultyBulk keyword difficulty Keyword difficulty API: get the SEO keyword difficulty score (0-100, how hard it is to rank in Google top 10) for up to 1000 keywords in a single call. For prioritising which keywords to target. Keywords with no data are omitted. Inputskeywords*arraylocationCodeintegerlanguageCodestring
Returns
The total and results, each with keyword and (where present) difficulty |
$0.03 |
/v1/trendsGoogle Trends search interest Google Trends search interest for up to 5 terms: a relative 0-100 popularity series over time, with per-keyword average and latest value. For content timing, seasonality and demand research. Optional location (default worldwide), timeframe (7d/30d/90d/12m/5y, default 12m) and type (web/news/youtube). found=false when no data. Inputskeywords*arraylocationstringtimeframestringtypestring
Returns
interest[] of { date, values } (relative 0-100 per keyword, in keywords order), plus averages and latest per keyword. found false when Google Trends has no data |
$0.03 |
/v1/ranked-keywordsKeywords a domain ranks for Get the Google organic keywords a domain already ranks for, each with its ranking position, ranking URL, monthly search volume, CPC, difficulty and search intent. For competitor and site SEO audits. Unknown domain returns empty results. Inputstarget*stringlimitintegerlocationCodeintegerlanguageCodestring
Returns
The target, total and results, each with keyword, position, url and (where present) volume, cpc, difficulty, intent, etv |
$0.05 |
/v1/competitorsOrganic search competitors Find a domain's organic search competitors: rival domains ranking for the same Google keywords, each with the number of common keywords, average position, total ranked keywords and estimated organic traffic. For competitive SEO research. Empty results if none. Inputstarget*stringlimitintegerlocationCodeintegerlanguageCodestring
Returns
The target, total and results, each with domain and (where present) commonKeywords, avgPosition, keywords, etv |
$0.05 |
/v1/serp-competitorsSERP competitors for a keyword set SERP competitors API - given a set of target Google keywords, find the domains that dominate those search results, each with how many of the keywords they rank for, average and median position, SERP rating, estimated traffic (ETV) and visibility. Unlike a domain-based competitor lookup, this starts from the keywords you want to win. For competitive SEO and content-strategy research. Empty results if none. Inputskeywords*arraylimitintegerlocationCodeintegerlanguageCodestring
Returns
The keywords, total and results, each with domain and (where present) avgPosition, medianPosition, rating, etv, keywordsCount, visibility, relevantSerpItems |
$0.05 |
/v1/page-intersectionKeyword intersection of specific pages Given a set of specific page URLs, find the Google keywords those pages jointly rank for, with each page's position, URL and estimated traffic (ETV) per keyword, plus search volume, CPC, competition, difficulty and intent. Page-level, not domain-level. Optional exclude_pages narrows to keywords the pages rank for that others do not. Inputspages*arrayexcludePagesarraylimitintegerlocationCodeintegerlanguageCodestring
Returns
The input pages, total and results, each with keyword, its ranks ([{ page, rankAbsolute, rankGroup, type, url, title, etv }] per specified page) and (where present) volume, cpc, competition, competitionLevel, difficulty, intent |
$0.05 |
/v1/keyword-gapKeyword gap vs a competitor Keyword gap analysis API - find the Google keywords a competitor ranks for that your domain does not, each with the competitor's ranking position and URL plus monthly search volume, CPC, competition, keyword difficulty and search intent. Surfaces content gaps and keyword opportunities for competitive SEO. Empty results if no gap. Inputsdomain*stringcompetitor*stringlimitintegerlocationCodeintegerlanguageCodestring
Returns
The domain, competitor, total and results, each with keyword, competitorRank, competitorUrl and (where present) volume, cpc, competition, competitionLevel, difficulty, intent, competitorEtv |
$0.05 |
/v1/domain-overviewDomain SEO traffic overview Domain overview: estimate a domain's Google SEO footprint, total organic and paid keywords, estimated traffic (ETV), traffic cost, and how many keywords rank in the top 3, top 10 and top 100. Fast website and domain SEO traffic overview and audit. Unknown domain returns found=false. Inputstarget*stringlocationCodeintegerlanguageCodestring
Returns
found, target and (where present) organic and paid, each with keywords, etv, trafficCostUsd, pos1, top3, top10, top100 |
$0.04 |
/v1/traffic-estimateBulk website traffic estimate Website traffic estimator API - estimate monthly Google organic and paid traffic (ETV) and ranked-keyword counts for up to 100 domains in a single call. For competitor analysis, prospect/CRM scoring and bulk domain enrichment. Unknown domains return found=false. Inputstargets*arraylocationCodeintegerlanguageCodestring
Returns
The total and results, each with target, found and (where present) organicEtv, organicKeywords, paidEtv, paidKeywords |
$0.05 |
/v1/backlinksBacklink profile & domain authority Get a domain's backlink profile and authority: DataForSEO domain rank, total backlinks, referring domains and main domains, referring pages, broken backlinks and spam score. For link analysis and competitor research. Unknown domain returns found=false. Inputstarget*string
Returns
found, target and (where present) rank, backlinks, referringDomains, referringMainDomains, referringPages, referringIps, spamScore, targetSpamScore, brokenBacklinks, externalLinksCount, internalLinksCount, crawledPages, firstSeen, lostDate, cms, country |
$0.06 |
/v1/backlinks-historyBacklink profile history Get a domain's backlink profile over time: a monthly timeseries of domain rank, total backlinks, new and lost backlinks, referring domains (new/lost/total), referring main domains, broken backlinks and crawled pages. For tracking link velocity and growth or a competitor's link building. Unknown domain returns found=false. Inputstarget*stringdateFromstringdateTostring
Returns
found, target, total and history (monthly points), each with date and (where present) rank, backlinks, newBacklinks, lostBacklinks, referringDomains, newReferringDomains, lostReferringDomains, referringMainDomains, referringPages, brokenBacklinks, crawledPages |
$0.05 |
/v1/referring-domainsReferring domains (backlink sources) List the domains linking to a target, each with DataForSEO domain rank, number of backlinks, dofollow count, referring subdomains, broken backlinks, spam score and first/last seen dates. For backlink audits and link building. Unknown domain returns empty results. Inputstarget*stringlimitinteger
Returns
The target, total and results, each with domain and (where present) rank, backlinks, dofollow, referringDomains, referringPages, brokenBacklinks, spamScore, firstSeen, lostDate |
$0.05 |
/v1/backlink-anchorsBacklink anchor text profile Backlink anchor text API - list the anchor texts pointing at a domain, each with how many backlinks, referring domains and referring pages use it, the dofollow/nofollow split, DataForSEO rank, spam score and broken-link count. For anchor-text distribution analysis, over-optimization/penalty audits and link-building research. Unknown domain returns empty results. Inputstarget*stringlimitinteger
Returns
The target, total and results, each with anchor and (where present) backlinks, referringDomains, referringMainDomains, referringPages, dofollow, nofollow, rank, spamScore, brokenBacklinks, firstSeen, lostDate |
$0.05 |
/v1/relevant-pagesTop ranking pages of a domain Relevant pages API - list a domain's best-performing pages in Google, each with page-level organic and paid metrics: ranked keyword count, estimated traffic (ETV), traffic cost and position buckets (pos1/top3/top10/top100). For finding a site's top content, competitor content research and page-level SEO audits. Unknown domain returns empty results. Inputstarget*stringlimitintegerlocationCodeintegerlanguageCodestring
Returns
The target, total and results, each with page and (where present) organic and paid metrics (keywords, etv, trafficCostUsd, pos1, top3, top10, top100) |
$0.05 |
/v1/historical-rankDomain traffic history (monthly trend) Historical rank overview API - a monthly time series of a domain's Google organic and paid visibility: ranked keyword count, estimated traffic (ETV), traffic cost and position buckets (pos1/top3/top10/top100) for each month. For tracking a site's SEO trajectory, spotting traffic drops/recoveries and competitor trend analysis. Unknown domain returns an empty series. Inputstarget*stringlocationCodeintegerlanguageCodestring
Returns
The target, count and series, each a month { year, month } with (where present) organic and paid metrics (keywords, etv, trafficCostUsd, pos1, top3, top10, top100) |
$0.18 |
/v1/on-pageOn-Page SEO Audit On-page SEO audit API - crawl a single URL and return its on-page SEO health: overall score, title & meta description, H1, word count, internal/external link and image counts, load timing (LCP, TTI) and a list of detected issues (missing meta, broken status, not-https, images missing alt, slow load, …). Inputsurl*string
Returns
{ url, found, statusCode, onpageScore (0-100), title, description, h1, wordCount, internalLinks, externalLinks, imagesCount, https, timing:{ lcpMs, ttiMs, domCompleteMs, durationMs }, issues[] }. found false if the page could not be fetched |
$0.006 |
/v1/pagespeedPage Speed & Core Web Vitals Page speed API - Google PageSpeed Insights (Lighthouse) performance audit for a URL on mobile or desktop. Returns the performance score plus lab Core Web Vitals (LCP, FCP, CLS, TBT, Speed Index, TTI) and, where available, real-user (CrUX) field data. Data source: Google PageSpeed Insights. Inputsurl*stringstrategystring
Returns
{ url, strategy, found, performanceScore (0-100), lab:{ fcpMs, lcpMs, cls, tbtMs, speedIndexMs, ttiMs }, field?:{ overall, fcpMs, lcpMs, cls, inpMs } }. found false if Lighthouse could not analyse the page |
$0.006 |
compute
bitwise
bitwise.openverbs.com
7 endpoints
| |
|---|---|
/v1/andBitwise AND Bitwise AND across two or more non-negative integers (given as decimal strings, evaluated as arbitrary-precision BigInt). Returns the result in decimal, hex and binary. Inputsvalues*array
Returns
{ decimal, hex, binary } |
$0.002 |
/v1/orBitwise OR Bitwise OR across two or more non-negative integers (given as decimal strings, evaluated as arbitrary-precision BigInt). Returns the result in decimal, hex and binary. Inputsvalues*array
Returns
{ decimal, hex, binary } |
$0.002 |
/v1/xorBitwise XOR Bitwise XOR across two or more non-negative integers (given as decimal strings, evaluated as arbitrary-precision BigInt). Returns the result in decimal, hex and binary. Inputsvalues*array
Returns
{ decimal, hex, binary } |
$0.002 |
/v1/notBitwise NOT One's-complement NOT of a non-negative integer within an explicit bit width (two's-complement domain). The value must fit in `width` bits. Returns decimal, hex and binary. Inputsvalue*stringwidth*integer
Returns
{ decimal, hex, binary } |
$0.002 |
/v1/shiftBit shift Shift a non-negative integer left or right by `amount` bits. A right shift is logical (fills with zeros). A left shift grows freely unless a `width` is given, in which case the result is masked to that width and the input must fit it. Returns decimal, hex and binary. Inputsvalue*stringamount*integerdirection*stringwidthinteger
Returns
{ decimal, hex, binary } |
$0.002 |
/v1/rotateBit rotate Circularly rotate a non-negative integer left or right within an explicit bit width (bits shifted off one end reappear at the other). The value must fit in `width` bits. Returns decimal, hex and binary. Inputsvalue*stringamount*integerdirection*stringwidth*integer
Returns
{ decimal, hex, binary } |
$0.002 |
/v1/analyzeAnalyze bits Inspect a non-negative integer's bit structure: bit length, set-bit count (population count), trailing-zero count, power-of-two test, and hex/binary representations. An optional width zero-pads the binary form. Inputsvalue*stringwidthinteger
Returns
{ decimal, hex, binary, bitLength, popcount, trailingZeros, isPowerOfTwo } |
$0.002 |
checksum
checksum.openverbs.com
4 endpoints
| |
/v1/crc32CRC-32 (IEEE) CRC-32 (IEEE 802.3 polynomial, as used by zip, gzip and PNG) over the input payload. Returns the checksum as an unsigned integer and 8-digit hex. Non-cryptographic, for error detection only. Inputsdata*stringencodingstring
Returns
{ checksum, hex } |
$0.002 |
/v1/crc16CRC-16 (multiple variants) CRC-16 over the input payload in one of several standard variants (ccitt-false, xmodem, modbus, ibm; default ccitt-false). Returns the checksum as an unsigned integer and 4-digit hex. Non-cryptographic. Inputsdata*stringencodingstringvariantstring
Returns
{ checksum, hex } |
$0.002 |
/v1/adler32Adler-32 Adler-32 checksum (as used by zlib) over the input payload. Faster than CRC-32 but weaker for short inputs. Returns the checksum as an unsigned integer and 8-digit hex. Non-cryptographic. Inputsdata*stringencodingstring
Returns
{ checksum, hex } |
$0.002 |
/v1/fletcherFletcher-16 / Fletcher-32 Fletcher checksum over the input payload, in 16-bit (default) or 32-bit width. Returns the checksum as an unsigned integer and hex. Non-cryptographic. Inputsdata*stringencodingstringbitsinteger
Returns
{ checksum, hex } |
$0.002 |
color
color.openverbs.com
4 endpoints
| |
/v1/convertConvert color Parse any CSS color and return it as hex, rgb, hsl, hwb, lab, lch and oklch. Inputscolor*string
Returns
The hex value and a formats map (rgb, hsl, hwb, lab, lch, oklch) as CSS strings |
$0.002 |
/v1/contrastWCAG contrast Compute the WCAG 2.1 contrast ratio between two colors and whether it passes AA/AAA. Inputsforeground*stringbackground*string
Returns
The contrast ratio and aa/aaa pass flags for normal and large text |
$0.002 |
/v1/schemeColor scheme Generate a harmony scheme (complementary, analogous, triadic, tetradic, monochromatic) from a base color. Inputscolor*stringtype*string
Returns
The scheme type, the base hex and the generated colors as hex strings |
$0.002 |
/v1/nearest-namedNearest named color Find the nearest CSS named color to a given color, by perceptual distance. Inputscolor*string
Returns
The nearest CSS name, its hex and the perceptual distance (0 = exact) |
$0.002 |
combinatorics
combinatorics.openverbs.com
5 endpoints
| |
/v1/factorialFactorial Exact factorial n! for 0 ≤ n ≤ 20000, returned as a decimal string with its digit count. Inputsn*string
Returns
{ result, digits } (result is an exact decimal string) |
$0.004 |
/v1/permutationsPermutations (nPr) Number of ordered arrangements of r items from n, nPr = n!/(n-r)!. Requires r ≤ n and r ≤ 10000. Inputsn*stringr*string
Returns
{ result, digits } (result is an exact decimal string) |
$0.004 |
/v1/combinationsCombinations (nCr) Binomial coefficient nCr = n!/(r!(n-r)!), the number of unordered r-subsets of n. Requires r ≤ n and min(r, n-r) ≤ 10000. Inputsn*stringr*string
Returns
{ result, digits } (result is an exact decimal string) |
$0.004 |
/v1/multinomialMultinomial coefficient Multinomial coefficient (k1+k2+…)! / (k1! k2! …), the number of ways to partition n = Σki items into labelled groups of the given sizes. The sum must be ≤ 20000. Inputsgroups*array
Returns
{ result, n, digits } |
$0.004 |
/v1/catalanCatalan number The n-th Catalan number Cₙ = C(2n, n)/(n+1), counting balanced bracketings, binary trees, and many other structures. Requires n ≤ 10000. Inputsn*string
Returns
{ result, digits } (result is an exact decimal string) |
$0.004 |
data
data.openverbs.com
6 endpoints
| |
/v1/queryQuery JSON with JMESPath Evaluate a JMESPath expression against a JSON value and return the selected/projected result. A malformed expression is rejected before payment. Inputsdata*anyexpression*string
Returns
The JMESPath result as result (null when the expression selects nothing) |
$0.004 |
/v1/diffDiff two JSON documents Compute the RFC 6902 JSON Patch that transforms `source` into `target`. The patch is a minimal array of add/remove/replace operations. Inputssource*anytarget*any
Returns
The RFC 6902 JSON Patch as patch (an array of operations) |
$0.004 |
/v1/patchApply a JSON Patch Apply an RFC 6902 JSON Patch to a JSON document and return the result. An invalid or unresolvable patch (e.g. a failed `test`, or a path that does not exist) is rejected before payment. Inputsdata*anypatch*array
Returns
The patched document as result |
$0.004 |
/v1/mergeDeep-merge JSON documents Deep-merge an ordered list of JSON documents, left to right. Objects are merged key-by-key; arrays, scalars and null in a later document replace the earlier value (last-wins, no array concatenation). Inputsdocuments*array
Returns
The merged document as result |
$0.004 |
/v1/flattenFlatten a nested object Flatten a nested object/array into a single-level object whose keys are the delimited paths to each leaf (default delimiter `.`). Requires an object or array. Inputsdata*anydelimiterstring
Returns
The flattened single-level object as result |
$0.004 |
/v1/unflattenUnflatten a delimited object Rebuild a nested object from a single-level object whose keys are delimited paths (default delimiter `.`), the inverse of flatten. Requires a flat object. Inputsdata*anydelimiterstring
Returns
The reconstructed nested object as result |
$0.004 |
datetime
datetime.openverbs.com
13 endpoints
| |
/v1/convertConvert timezone Convert an ISO datetime into another timezone, with offset, weekday and Unix time. Inputsdatetime*stringfromstringto*string
Returns
The converted iso datetime in the to zone, its offset, weekday, unix seconds and resolved from zone |
$0.002 |
/v1/business-daysBusiness-day math Add/subtract business days to a date, or count business days between two dates, skipping weekends and optional holidays. Inputsstart*stringdaysintegerendstringtimezonestringweekendarrayholidaysarray
Returns
In add mode the resulting end date; in count mode the number of businessDays between start and end |
$0.002 |
/v1/parseParse an ISO 8601 duration Parse an ISO 8601 duration such as 'P1Y2M10DT2H30M' into its components. Returns a normalized ISO string and totalSeconds, but totalSeconds is null when the duration contains years or months, because those are calendar-variable (use /v1/add or /v1/between for exact date math). Inputsduration*string
Returns
{ sign, components, calendarDependent, totalSeconds, iso } |
$0.002 |
/v1/formatBuild an ISO 8601 duration Assemble an ISO 8601 duration string from individual components (years, months, weeks, days, hours, minutes, seconds) and an optional sign. All components must be non-negative and at least one must be non-zero. Inputsyearsnumbermonthsnumberweeksnumberdaysnumberhoursnumberminutesnumbersecondsnumbersigninteger
Returns
{ iso } |
$0.002 |
/v1/humanizeHumanize an ISO 8601 duration Render an ISO 8601 duration as an English phrase, e.g. 'P1Y2M' → '1 year and 2 months'. Components are shown in descending order with correct pluralization. Inputsduration*string
Returns
{ text } |
$0.002 |
/v1/addAdd a duration to a date Add an ISO 8601 duration to a start date or date-time and return the resulting UTC instant. Calendar-aware: months and years honor month lengths (e.g. Jan 31 + P1M clamps to the last day of February). A negative-signed duration subtracts. Inputsstart*stringduration*string
Returns
{ result, epochSeconds } |
$0.002 |
/v1/betweenDuration between two dates Compute the calendar breakdown (years, months, days, hours, minutes, seconds) between two ISO 8601 dates/date-times, plus exact totalSeconds. If end precedes start the result is flagged negative rather than erroring. Inputsstart*stringend*string
Returns
{ negative, components, totalSeconds, iso } |
$0.002 |
/v1/to-jdnDate → Julian Day Number Convert a proleptic-Gregorian calendar date to its Julian Day Number (the integer count of days since JDN 0, 1 January 4713 BC in the proleptic Julian calendar). Inputsyear*integermonth*integerday*integer
Returns
{ jdn } |
$0.004 |
/v1/from-jdnJulian Day Number → date Convert a Julian Day Number back to a proleptic-Gregorian date, with the ISO weekday (1=Monday..7=Sunday) and its name. Inputsjdn*integer
Returns
{ year, month, day, weekday, weekdayName } |
$0.004 |
/v1/weekdayDay of week Return the ISO weekday (1=Monday..7=Sunday) and its name for a Gregorian date. Inputsyear*integermonth*integerday*integer
Returns
{ weekday, weekdayName } |
$0.004 |
/v1/iso-weekISO-8601 week number Return the ISO-8601 week-numbering year, week number (1..53) and weekday (1=Monday..7=Sunday) for a Gregorian date. The ISO year can differ from the calendar year around New Year. Inputsyear*integermonth*integerday*integer
Returns
{ isoYear, week, weekday } |
$0.004 |
/v1/easterGregorian Easter Compute the date of Western (Gregorian) Easter Sunday for a year in 1583..9999 using the Anonymous Gregorian computus. Inputsyear*integer
Returns
{ year, month, day, weekdayName } |
$0.004 |
/v1/day-of-yearDay of year Return the ordinal day of the year (1..366), the number of days in that year and whether it is a leap year. Inputsyear*integermonth*integerday*integer
Returns
{ dayOfYear, daysInYear, leapYear } |
$0.004 |
distribution
distribution.openverbs.com
4 endpoints
| |
/v1/normalNormal (Gaussian) distribution Normal distribution with optional mean (default 0) and standard deviation sd (default 1). `function` selects the density (pdf), cumulative distribution (cdf) or quantile / inverse-CDF. Inputsfunction*stringx*numbermeannumbersdnumber
Returns
{ value } |
$0.004 |
/v1/tStudent's t distribution Student's t distribution with df degrees of freedom (> 0). `function` selects the density (pdf), cumulative distribution (cdf) or quantile / inverse-CDF. Inputsfunction*stringx*numberdf*number
Returns
{ value } |
$0.004 |
/v1/binomialBinomial distribution Binomial distribution with `trials` (n ≥ 0, ≤ 1e6) and success `probability` (0..1). `function` selects the mass (pmf), cumulative distribution (cdf) or quantile / inverse-CDF. Inputsfunction*stringx*numbertrials*integerprobability*number
Returns
{ value } |
$0.004 |
/v1/poissonPoisson distribution Poisson distribution with rate `lambda` (> 0, ≤ 1e9). `function` selects the mass (pmf), cumulative distribution (cdf) or quantile / inverse-CDF. Inputsfunction*stringx*numberlambda*number
Returns
{ value } |
$0.004 |
finance
finance.openverbs.com
6 endpoints
| |
/v1/loanLoan amortization Compute the level monthly payment, total paid and total interest of a fully-amortizing loan. Handles a 0% rate. Set schedule=true to also return the full month-by-month amortization table. Inputsprincipal*numberannualRatePercent*numbertermMonths*integerscheduleboolean
Returns
{ monthlyPayment, totalPaid, totalInterest, schedule? } |
$0.004 |
/v1/interestSimple / compound interest Grow a principal by simple or compound interest over a number of years. Compound interest uses compoundsPerYear compounding periods (default 12, monthly). Inputsprincipal*numberannualRatePercent*numberyears*numbermethodstringcompoundsPerYearinteger
Returns
{ method, amount, interest } |
$0.004 |
/v1/future-valueFuture value Future value of a present sum and/or a level annuity, given a per-period rate and number of periods. Set dueAtBeginning=true for an annuity-due (payments at the start of each period). InputsratePercent*numberperiods*integerpaymentnumberpresentValuenumberdueAtBeginningboolean
Returns
{ futureValue } |
$0.004 |
/v1/present-valuePresent value Present value of a future sum and/or a level annuity, given a per-period rate and number of periods. Set dueAtBeginning=true for an annuity-due. InputsratePercent*numberperiods*integerpaymentnumberfutureValuenumberdueAtBeginningboolean
Returns
{ presentValue } |
$0.004 |
/v1/npvNet present value Net present value of a series of cash flows discounted at a per-period rate. cashflows[0] is the time-0 flow (typically the initial outlay, negative). InputsratePercent*numbercashflows*array
Returns
{ npv } |
$0.004 |
/v1/irrInternal rate of return Internal rate of return (per period) of a series of cash flows, solved with a bounded bisection. Requires at least one positive and one negative flow; flows with no sign change or no bracketable root are rejected as a clean 400. Inputscashflows*array
Returns
{ ratePercent } |
$0.004 |
format
format.openverbs.com
5 endpoints
| |
/v1/convertConvert structured data Transcode a document between json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist and querystring. Any source converts to any target through a JSON hub. Malformed input or a target that cannot represent the structure is rejected before payment. Inputsfrom*stringto*stringdata*stringoptionsobject
Returns
The converted document as data, plus the from and to formats |
$0.004 |
/v1/validateValidate against a JSON Schema Parse a document (json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist or querystring) and validate it against a JSON Schema. Returns whether it is valid and a list of precise, path-tagged errors. Malformed input or an invalid schema is rejected before payment. Inputsdata*stringfromstringschema*object
Returns
Whether the document is valid, the from format it was parsed as, and an errors array of {path, message, keyword} |
$0.004 |
/v1/detectDetect the format of a blob Sniff which structured format an unknown document is. Because formats overlap, returns every plausible format with a 0, 1 score plus the best guess, honest about ambiguity rather than pretending certainty. Inputsdata*string
Returns
The best-guess format (or null), its score, and the ranked candidates array of {format, score} |
$0.004 |
/v1/infer-schemaInfer a JSON Schema Infer a JSON Schema (draft-07) from a sample document in any supported format. Types are inferred, present keys are marked required, and heterogeneous array item schemas are merged. The result validates out of the box with /v1/validate. Inputsdata*stringfromstring
Returns
The inferred JSON schema (draft-07) and the from format the sample was parsed as |
$0.004 |
/v1/canonicalizeCanonicalize JSON (RFC 8785) Parse a document (in any format) and re-emit it in the RFC 8785 JSON Canonicalization Scheme form, sorted keys, canonical number/string formatting, plus the SHA-256 of the canonical bytes for stable hashing, signing and dedup. Inputsdata*stringfromstring
Returns
The canonical JSON string data, its sha256 (hex), and the from format it was parsed as |
$0.004 |
fraction
fraction.openverbs.com
4 endpoints
| |
/v1/simplifySimplify a fraction Reduce a fraction to lowest terms and describe it: numerator/denominator (denominator normalized positive), sign, whether it is an integer, and a mixed-number form when improper. A zero denominator is a clean 400. Inputsnumerator*integerdenominatorinteger
Returns
{ numerator, denominator, sign, isInteger, mixed } |
$0.002 |
/v1/arithmeticFraction arithmetic Add, subtract, multiply or divide two fractions and return the exact, fully-reduced result. All computation is done in BigInt so there is no floating-point error. Dividing by a zero fraction is a clean 400. Inputsa*objectb*objectoperation*string
Returns
{ numerator, denominator, sign, isInteger, mixed } |
$0.002 |
/v1/from-decimalDecimal to fraction Convert a decimal string to an exact reduced fraction. For a repeating decimal, set repeat to the number of trailing fractional digits that repeat (e.g. value='0.1666', repeat=1 → 1/6; value='0.3', repeat=1 → 1/3). A non-numeric value is a clean 400. Inputsvalue*stringrepeatinteger
Returns
{ numerator, denominator, sign, isInteger, mixed } |
$0.002 |
/v1/to-decimalFraction to decimal Expand a fraction to its decimal form by exact long division, detecting a repeating cycle and rendering it in parenthesis notation (e.g. 1/6 → '0.1(6)', 1/7 → '0.(142857)'). maxDigits caps a non-repeating expansion. A zero denominator is a clean 400. Inputsnumerator*integerdenominatorintegermaxDigitsinteger
Returns
{ value, terminating, repeating } |
$0.002 |
geometry
geometry.openverbs.com
5 endpoints
| |
/v1/circleCircle Diameter, circumference and area of a circle from its radius. Inputsradius*number
Returns
{ radius, diameter, circumference, area } |
$0.004 |
/v1/rectangleRectangle Area, perimeter and diagonal of a rectangle from its width and height. Inputswidth*numberheight*number
Returns
{ width, height, area, perimeter, diagonal } |
$0.004 |
/v1/triangleTriangle (SSS) Area (Heron's formula), perimeter and interior angles of a triangle from its three side lengths. Sides that violate the triangle inequality are rejected as a clean 400. Inputsa*numberb*numberc*number
Returns
{ sides, perimeter, area, angles: { A, B, C } } (degrees) |
$0.004 |
/v1/polygonPolygon Area (shoelace formula), perimeter and centroid of a simple polygon given its vertices in order. Vertices are treated as a closed ring (last connects to first). Inputspoints*array
Returns
{ vertices, area, perimeter, centroid: [x, y] } |
$0.004 |
/v1/distancePoint distance Euclidean, Manhattan and Chebyshev distance between two 2-D points. Inputsfrom*arrayto*array
Returns
{ euclidean, manhattan, chebyshev } |
$0.004 |
geospatial
geospatial.openverbs.com
15 endpoints
| |
/v1/to-dmsDecimal degrees → DMS Convert a decimal-degree latitude/longitude to degrees-minutes-seconds, with hemisphere letters and a formatted string for each axis. Inputslat*numberlon*number
Returns
{ lat:{degrees,minutes,seconds,hemisphere,formatted}, lon:{…} } |
$0.002 |
/v1/parseParse a coordinate string Parse a coordinate string into decimal lat/lon. Accepts a plain decimal pair ('40.4462, -79.9822') or DMS with hemisphere letters ('40°26'46"N 79°58'56"W'). Anything unrecognized is a clean 400. Inputscoordinate*string
Returns
{ lat, lon } |
$0.002 |
/v1/utmDecimal degrees → UTM Convert decimal lat/lon to a UTM coordinate (zone, latitude band, hemisphere, easting, northing) on WGS84, including the Norway/Svalbard zone exceptions. Defined for latitudes -80..84. Inputslat*numberlon*number
Returns
{ zone, band, hemisphere, easting, northing } |
$0.002 |
/v1/from-utmUTM → decimal degrees Convert a UTM coordinate (zone, hemisphere, easting, northing) back to decimal lat/lon on WGS84. Inputszone*integerhemisphere*stringeasting*numbernorthing*number
Returns
{ lat, lon } |
$0.002 |
/v1/mgrsDecimal degrees → MGRS Convert decimal lat/lon to a Military Grid Reference System (MGRS) string on WGS84. Precision is the number of digits per axis (1, 5; 5 = 1-metre resolution, default 5). Inputslat*numberlon*numberprecisioninteger
Returns
{ mgrs, zone, band, square } |
$0.002 |
/v1/from-mgrsMGRS → decimal degrees Convert an MGRS grid reference back to decimal lat/lon on WGS84 (the coordinate of the grid cell's south-west corner at the given precision). Whitespace is ignored; a malformed reference is a clean 400. Inputsmgrs*string
Returns
{ lat, lon } |
$0.002 |
/v1/forwardWGS84 → Web Mercator Project WGS84 longitude/latitude (degrees) to Web Mercator (EPSG:3857) easting/northing in metres. Latitude is clamped to ±85.0511° (the projection's valid extent). Inputslon*numberlat*number
Returns
{ x, y } in metres |
$0.002 |
/v1/inverseWeb Mercator → WGS84 Un-project Web Mercator (EPSG:3857) easting/northing in metres back to WGS84 longitude/latitude in degrees. Inputsx*numbery*number
Returns
{ lon, lat } in degrees |
$0.002 |
/v1/tileCoordinate → slippy-map tile Map a WGS84 coordinate at a given zoom (0..30) to its slippy-map (XYZ / Google / OSM) tile x,y and its Bing quadkey. Inputslon*numberlat*numberzoom*integer
Returns
{ z, x, y, quadkey } |
$0.002 |
/v1/tile-boundsTile → geographic bounds Compute the geographic bounding box (west/south/east/north in degrees) of a slippy-map tile z/x/y, plus its Bing quadkey. Inputsz*integerx*integery*integer
Returns
{ west, south, east, north, quadkey } |
$0.002 |
/v1/resolutionGround resolution & scale Report the ground resolution (metres per pixel, for 256-px tiles) and the OGC map scale denominator at a zoom level, optionally adjusted for latitude (default equator). Inputszoom*integerlatnumber
Returns
{ metersPerPixel, scaleDenominator } |
$0.002 |
/v1/distanceGreat-circle distance Distance and initial bearing between two coordinates. Inputsfrom*objectto*object
Returns
Distance in meters/kilometers/miles/nauticalMiles and the initial bearing in degrees |
$0.002 |
/v1/geohashEncode geohash Encode a coordinate to a geohash and return its bounding box and 8 neighbors. Inputslat*numberlon*numberprecisioninteger
Returns
The geohash, its precision, the cell bbox [minLat,minLon,maxLat,maxLon] and its 8 neighbors |
$0.002 |
/v1/timezoneTimezone from coordinate Resolve the timezone for a latitude/longitude. Inputslat*numberlon*number
Returns
The IANA timezone (e.g. "Europe/Paris") containing the coordinate |
$0.002 |
/v1/point-in-polygonPoint in polygon Test whether a coordinate falls inside a polygon. Inputspoint*objectpolygon*array
Returns
Whether the point is inside the polygon |
$0.002 |
hash
hash.openverbs.com
2 endpoints
| |
/v1/hashHash data Compute a cryptographic digest (SHA-2, SHA-3, BLAKE2, and legacy SHA-1/MD5/RIPEMD-160) of some data. The input may be utf8/hex/base64/base64url and the digest is returned as hex/base64/base64url. Inputsdata*stringalgorithm*stringinputEncodingstringoutputEncodingstring
Returns
{ algorithm, hash, outputEncoding } |
$0.002 |
/v1/hmacHMAC data Compute a keyed HMAC of some data with a secret key, the standard way to sign and verify webhooks (Stripe, GitHub, etc.) and API requests. Data and key may each be utf8/hex/base64/base64url; the tag is returned as hex/base64/base64url. Inputsdata*stringkey*stringalgorithm*stringinputEncodingstringkeyEncodingstringoutputEncodingstring
Returns
{ algorithm, hmac, outputEncoding } |
$0.002 |
ical
ical.openverbs.com
3 endpoints
| |
/v1/parseParse iCalendar Parse an .ics document into structured calendar events (summary, times, location, RRULE, attendees). Inputsics*string
Returns
The calendar metadata and an events[] array of parsed events |
$0.002 |
/v1/expandExpand recurrence Expand an RRULE recurrence rule into its occurrence datetimes, with a human-readable description. Inputsrrule*stringdtstartstringfromstringtostringlimitinteger
Returns
A human-readable text, the count, and the occurrences[] as ISO datetimes |
$0.002 |
/v1/createCreate iCalendar Build a valid .ics document from event fields (summary, start/end, location, …). Inputssummary*stringstart*stringendstringdescriptionstringlocationstringurlstringuidstringallDaybooleanprodIdstringcalendarNamestring
Returns
The generated ics document as a string |
$0.002 |
id
id.openverbs.com
4 endpoints
| |
/v1/uuidGenerate a UUID (v4/v7) Generate one or more UUIDs. Supports v4 (random), v1/v7 (time), and v3/v5 (namespaced). Inputsversionstringcountintegernamespacestringnamestring
Returns
The version, count, and the generated uuids array |
$0.002 |
/v1/inspectInspect a UUID Validate a UUID and report its version and variant. Inputsuuid*string
Returns
Whether it is valid, the normalized uuid, its version (0, 15) and variant |
$0.002 |
/v1/ulidGenerate a ULID Generate one or more lexicographically sortable ULIDs (monotonic within a call). Inputscountintegertimeinteger
Returns
The count and the generated ulids array (ascending order) |
$0.002 |
/v1/decodeDecode a ULID Validate a ULID and extract its embedded timestamp and time/random components. Inputsulid*string
Returns
Whether it is valid, the timestamp (ms) and datetime (ISO), and the timeComponent/randomComponent |
$0.002 |
jsonschema
jsonschema.openverbs.com
2 endpoints
| |
/v1/validateValidate against JSON Schema Validate a JSON value against a JSON Schema (draft-07, with the standard string formats enabled). An invalid schema is rejected as a clean 400 before payment; a valid schema that the data simply fails to satisfy is a successful result with valid=false and a list of errors (path, keyword, message). Inputsschema*objectdata*any
Returns
{ valid, errors: [{ path, keyword, message }] } |
$0.004 |
/v1/inferInfer schema from a sample Infer a JSON Schema (draft-07) from an example value, walking objects and arrays recursively. Set detectFormat=true to tag strings that look like date-time/date/email/uri/uuid, requireAll=false to leave object properties optional, and additionalProperties=true to allow extra keys. Inputssample*anydetectFormatbooleanrequireAllbooleanadditionalPropertiesboolean
Returns
{ schema } |
$0.004 |
jwt
jwt.openverbs.com
3 endpoints
| |
/v1/decodeDecode a JWT Decode a JSON Web Token WITHOUT verifying its signature and return the header, payload and signature. A structurally malformed token is rejected before payment. Never trust a decoded payload you have not verified. Inputstoken*string
Returns
The decoded header, payload and signature (unverified) |
$0.004 |
/v1/verifyVerify a JWT Verify a JSON Web Token's signature and claims against a shared secret (HS*) or a PEM public key (RS/ES/PS). Returns { valid, payload } on success or { valid: false, reason } for a bad signature, expired/not-yet-active token, or a failed issuer/audience/subject check. Pass `algorithms` to pin the accepted signing algorithms and prevent algorithm-confusion attacks. Inputstoken*stringkey*stringalgorithmsarrayissuerstringaudiencestringsubjectstringclockToleranceSecintegerignoreExpirationboolean
Returns
{ valid: true, header, payload } or { valid: false, reason, code } |
$0.004 |
/v1/signSign a JWT Mint a signed JSON Web Token from a JSON claims object, using a shared secret (HS*) or a PEM private key (RS/ES/PS). Supports expiresInSec, notBeforeSec, issuer, audience, subject and keyid. An unusable key or option is rejected before payment. Inputspayload*objectkey*stringalgorithm*stringexpiresInSecintegernotBeforeSecintegerissuerstringaudiencestringsubjectstringkeyidstringnoTimestampboolean
Returns
The signed compact JWT as token |
$0.004 |
math
math.openverbs.com
2 endpoints
| |
/v1/evalEvaluate expression Evaluate a mathematical expression with optional named variables, arithmetic, comparison and logic operators plus functions like sqrt, abs, min, max, sin, cos, log, floor, round, etc. A syntax error, an undefined variable, or a non-finite result is a clean 400. The factorial operator is disabled for safety. Inputsexpression*stringvariablesobjectprecisioninteger
Returns
{ result, variables }, result is a number, boolean, string or simple array; variables are the names the expression uses |
$0.004 |
/v1/variablesList expression variables Parse an expression and return the free variables it references, without evaluating it, so an agent can discover which inputs a formula needs before supplying values. A syntax error is a clean 400. Inputsexpression*string
Returns
{ variables }, the names the expression references |
$0.004 |
matrix
matrix.openverbs.com
5 endpoints
| |
/v1/multiplyMultiply matrices Multiply two matrices A·B. The inner dimensions must agree (columns of A equal rows of B); a mismatch or a ragged/empty matrix is a clean 400. Inputsa*arrayb*array
Returns
{ result, rows, cols } |
$0.004 |
/v1/transposeTranspose a matrix Transpose a matrix, swapping rows and columns. A ragged/empty matrix is a clean 400. Inputsmatrix*array
Returns
{ result, rows, cols } |
$0.004 |
/v1/determinantDeterminant Compute the determinant of a square matrix via Gaussian elimination with partial pivoting. A non-square, ragged or empty matrix is a clean 400; a singular matrix simply returns 0. Inputsmatrix*array
Returns
{ determinant } |
$0.004 |
/v1/inverseInvert a matrix Invert a square matrix via Gauss-Jordan elimination. A non-square, ragged or empty matrix is a clean 400. A singular (non-invertible) matrix is NOT an error, it returns a successful { invertible:false, inverse:null }. Inputsmatrix*array
Returns
{ invertible, inverse, determinant } |
$0.004 |
/v1/solveSolve a linear system Solve the linear system A·x = b for a square coefficient matrix A and vector b via Gaussian elimination with partial pivoting. A non-square A or a b of the wrong length is a clean 400. A singular system is NOT an error, it returns a successful { solvable:false, solution:null }. Inputsa*arrayb*array
Returns
{ solvable, solution } |
$0.004 |
mime
mime.openverbs.com
2 endpoints
| |
/v1/lookupLookup MIME type Resolve a filename, path or extension to its MIME type, charset and full Content-Type. Inputspath*string
Returns
The mimeType, its charset and the full contentType (null if unknown) |
$0.002 |
/v1/extensionMIME to extension Resolve a MIME type to its default file extension. InputsmimeType*string
Returns
The default extension for the type (null if unknown) |
$0.002 |
money
money.openverbs.com
4 endpoints
| |
/v1/formatFormat currency Format a numeric amount as currency for a given locale using Intl, honouring the currency's own minor-unit convention (USD→2, JPY→0). display selects the symbol, narrow symbol, ISO code or full name. An unknown currency or locale is a clean 400. Inputsamount*numbercurrency*stringlocalestringdisplaystring
Returns
{ formatted, currency, locale } |
$0.002 |
/v1/parseParse money string Parse a formatted money string back into a number, using the locale's grouping and decimal separators (so '1.234,56' in de-DE → 1234.56). Currency symbols/codes and whitespace are stripped; parentheses or a leading minus mean negative. A string with no numeric amount is a clean 400. Inputstext*stringlocalestring
Returns
{ amount } |
$0.002 |
/v1/roundRound to minor units Round an amount to a currency's minor units (or an explicit minorUnits) with a chosen rounding mode: half-even (banker's, default), half-up, half-down, ceil, floor or trunc. Give a currency to derive minor units automatically (USD→2, JPY→0). Inputsamount*numbercurrencystringminorUnitsintegermodestring
Returns
{ amount, minorUnits, mode } |
$0.002 |
/v1/allocateAllocate without losing cents Split an amount into parts using integer minor-unit math so the shares always sum back to the exact original, no rounding drift. Pass parts for an even split, or ratios for a weighted one (e.g. [1,1,1] splits $100 into 33.34/33.33/33.33). The leftover minor units go to the largest fractional remainders. Inputsamount*numberpartsintegerratiosarraycurrencystringminorUnitsinteger
Returns
{ shares, minorUnits } |
$0.002 |
numeral
numeral.openverbs.com
4 endpoints
| |
/v1/radixRadix (base) conversion Convert an integer between numeral bases 2, 36 (binary, octal, hex, base36, …). Arbitrary size via BigInt; digits are case-insensitive and a leading minus is allowed. Inputsvalue*stringfromBase*integertoBase*integer
Returns
{ value, fromBase, toBase, result, decimal } |
$0.002 |
/v1/romanRoman numerals Convert between integers (1, 3999) and Roman numerals in either direction, a digit string is encoded to Roman, a Roman numeral is decoded to an integer. Non-canonical numerals (IIII, IC) are rejected. Inputsvalue*string
Returns
{ input, direction, integer, roman } |
$0.002 |
/v1/ordinalOrdinal Format a non-negative integer as an ordinal, both the suffixed form (21st) and the ordinal words (twenty-first). Inputsnumber*integer
Returns
{ number, ordinal, ordinalWords } |
$0.002 |
/v1/wordsNumber to words Spell an integer out in English words, e.g. 123 → "one hundred twenty-three". Negatives are prefixed with "minus". Inputsnumber*integer
Returns
{ number, words } |
$0.002 |
numtheory
numtheory.openverbs.com
6 endpoints
| |
/v1/gcdGreatest common divisor Greatest common divisor of two or more non-negative integers (arbitrary precision). Inputsvalues*array
Returns
{ result } |
$0.004 |
/v1/lcmLeast common multiple Least common multiple of two or more positive integers (arbitrary precision). Inputsvalues*array
Returns
{ result } |
$0.004 |
/v1/factorizePrime factorization Prime-factorize a positive integer (≤ 10^15 so the computation is always fast). Returns the prime factors with exponents, the divisor count, and whether n is prime. Inputsn*string
Returns
{ n, factors:[{prime,exponent}], isPrime, divisorCount } |
$0.004 |
/v1/is-primePrimality test Miller-Rabin primality test (with witnesses that are exact for all 64-bit integers) on an arbitrary-precision integer. Returns { prime }. Inputsn*string
Returns
{ prime } |
$0.004 |
/v1/totientEuler's totient Euler's totient φ(n), the count of integers in [1, n] coprime to n, for a positive integer ≤ 10^15 (it is computed from the prime factorization). Inputsn*string
Returns
{ totient } |
$0.004 |
/v1/modpowModular exponentiation Compute (base ^ exponent) mod modulus efficiently for arbitrary-precision integers. The modulus must be positive. Inputsbase*stringexponent*stringmodulus*string
Returns
{ result } |
$0.004 |
otp
otp.openverbs.com
4 endpoints
| |
/v1/totpTOTP (time-based) Generate an RFC 6238 time-based one-time password from a base32 secret. Uses the current time by default, or an explicit unix timestamp (seconds); configurable period (default 30s), digits (default 6) and algorithm (default SHA1). Also returns the counter and seconds remaining in the window. Inputssecret*stringtimestampintegerperiodintegerdigitsintegeralgorithmstringt0integer
Returns
{ code, counter, period, secondsRemaining } |
$0.004 |
/v1/hotpHOTP (counter-based) Generate an RFC 4226 counter-based HMAC one-time password from a base32 secret and counter. Configurable digits (6, 10, default 6) and algorithm (SHA1/SHA256/SHA512, default SHA1). An invalid base32 secret is a clean 400. Inputssecret*stringcounter*integerdigitsintegeralgorithmstring
Returns
{ code, counter } |
$0.004 |
/v1/verifyVerify a TOTP code Verify a submitted TOTP code against a base32 secret, scanning ±window time steps (default ±1) to tolerate clock drift. Returns valid plus the matching step offset (delta). A code that does not match is a successful result with valid=false, not an error. Inputssecret*stringcode*stringtimestampintegerperiodintegerdigitsintegeralgorithmstringwindowintegert0integer
Returns
{ valid, delta } |
$0.004 |
/v1/uriBuild otpauth:// URI Build an otpauth:// provisioning URI (the string encoded in authenticator QR codes) for a totp or hotp secret. Includes label, issuer, algorithm, digits and period (totp) or counter (hotp). The secret must be valid base32. Inputstypestringlabel*stringsecret*stringissuerstringalgorithmstringdigitsintegerperiodintegercounterinteger
Returns
{ uri } |
$0.004 |
pack
pack.openverbs.com
2 endpoints
| |
/v1/encodeEncode JSON to MessagePack/CBOR Serialize a JSON value into a compact MessagePack or CBOR byte stream, returned as a base64 (default), base64url or hex string, along with the byte length. Inputsformat*stringdata*anyoutputEncodingstring
Returns
{ format, data, outputEncoding, bytes }, the encoded envelope and its byte length |
$0.004 |
/v1/decodeDecode MessagePack/CBOR to JSON Decode a MessagePack or CBOR byte stream (supplied as a base64/base64url/hex string) back into a JSON value. A malformed envelope, malformed bytes, or a value that is not JSON-representable is rejected before payment. Inputsformat*stringdata*stringinputEncodingstring
Returns
{ format, value }, the decoded JSON value |
$0.004 |
password
password.openverbs.com
2 endpoints
| |
/v1/strengthPassword strength Estimate password strength: score, guesses, crack-time and feedback. Never stored. Inputspassword*stringuserInputsarray
Returns
The score (0, 4), guessesLog10, a crackTime map, and warning/suggestions feedback |
$0.002 |
/v1/generateGenerate password Generate a secure random password (characters) or a wordlist passphrase. InputsmodestringlengthintegerlowercasebooleanuppercasebooleandigitsbooleansymbolsbooleanexcludeAmbiguousbooleanwordsintegerseparatorstringcapitalizeboolean
Returns
The generated password, the mode used and its entropyBits |
$0.002 |
phone
phone.openverbs.com
1 endpoint
| |
/v1/parseParse phone number Parse, validate and format a phone number, E.164/national/international/RFC 3966, region and line type (syntactic validation, no carrier lookup). Inputsnumber*stringcountrystring
Returns
Whether the number is valid/possible, its e164/national/international/rfc3966 formats, region, callingCode and line type. An unparseable number returns valid: false with a reason (e.g. NOT_A_NUMBER, TOO_SHORT, INVALID_COUNTRY) |
$0.002 |
qr
qr.openverbs.com
3 endpoints
| |
/v1/qrGenerate QR code Render text (URL, vCard, Wi-Fi config, …) as a QR code, SVG string or PNG data URL. Inputstext*stringformatstringsizeintegermarginintegereccstring
Returns
The generated image (SVG markup or a PNG data: URL) and its format |
$0.004 |
/v1/barcodeGenerate barcode Render a barcode (Code128, Code39, EAN-13/8, UPC-A/E, ITF-14, DataMatrix, PDF417) as SVG or PNG data URL. Inputstext*stringtype*stringformatstringscaleintegerheightintegerincludeTextboolean
Returns
The generated image (SVG markup or a PNG data: URL), its format and the barcode type |
$0.004 |
/v1/decodeDecode QR / barcode Read the text out of a QR code or barcode in a PNG or JPEG image. Auto-detects QR, DataMatrix, PDF417, Aztec and 1D symbologies (Code128/39/93, EAN-13/8, UPC-A/E, ITF, Codabar). A valid image with no code returns { found: false }; a payload that is not a parseable image is a 400. Inputsimage*string
Returns
{ found, text?, format?, kind? }, kind is "qr" (2D) or "barcode" (1D) |
$0.004 |
random
random.openverbs.com
4 endpoints
| |
/v1/bytesRandom bytes Generate cryptographically-secure random bytes, returned as hex, base64 or base64url. Inputscount*integerencodingstring
Returns
{ count, encoding, data } |
$0.002 |
/v1/integerRandom integers Generate one or more uniformly-distributed random integers in an inclusive [min, max] range. Inputsmin*integermax*integercountinteger
Returns
{ values } |
$0.002 |
/v1/stringRandom string Generate a random string of a given length from a named charset (alphanumeric, alpha, lower, upper, numeric, hex, base58) or a custom alphabet. Unbiased character selection. Inputslength*integercharsetstringalphabetstring
Returns
{ value, alphabet } |
$0.002 |
/v1/sampleRandom sample Draw a random sample from a provided array, without replacement by default (a fair shuffle), or with replacement when unique is false. count defaults to 1. Inputsitems*arraycountintegeruniqueboolean
Returns
{ items } |
$0.002 |
semver
semver.openverbs.com
3 endpoints
| |
/v1/parseParse version Parse a semantic version into major/minor/patch, prerelease and build metadata. Inputsversion*string
Returns
Whether it is valid, the normalized version, major/minor/patch, and prerelease/build arrays |
$0.002 |
/v1/compareCompare versions Compare two semantic versions and report which is greater (precedence-aware). Inputsa*stringb*string
Returns
The comparison (-1/0/1), a relation (lt/eq/gt) and the greater version |
$0.002 |
/v1/satisfiesRange satisfaction Test whether a version satisfies a semver range (^, ~, x-ranges, ||, hyphen). Inputsversion*stringrange*stringincludePrereleaseboolean
Returns
Whether the version satisfies the range, plus the normalizedRange |
$0.002 |
slug
slug.openverbs.com
1 endpoint
| |
/v1/createCreate slug Convert text into a URL-safe slug: transliterate accents, apply a locale character map, and join with a separator. Inputstext*stringseparatorstringlowercasebooleanstrictbooleantrimbooleanlocalestring
Returns
The generated slug, the original text and the slug length |
$0.002 |
spreadsheet
spreadsheet.openverbs.com
4 endpoints
| |
/v1/a1-to-rcA1 reference → row/column Parse an A1-style cell reference (e.g. "B3" or "$AA$100") into 1-based row and column numbers, plus the column letters and whether each part is absolute. Inputsref*string
Returns
{ row, column, columnLetters, columnAbsolute, rowAbsolute } |
$0.004 |
/v1/rc-to-a1Row/column → A1 reference Build an A1-style cell reference from 1-based row and column numbers, optionally marking the row and/or column absolute ($). Inputsrow*integercolumn*integerrowAbsolutebooleancolumnAbsoluteboolean
Returns
{ ref, columnLetters } |
$0.004 |
/v1/columnColumn letter ↔ number Convert between a spreadsheet column letter and its 1-based index in either direction. Provide exactly one of `letter` (e.g. "AA") or `number` (e.g. 27); the response always contains both. Inputsletterstringnumberinteger
Returns
{ letter, number } |
$0.004 |
/v1/rangeParse an A1 range Parse an A1 range like "A1:C10" into its start and end cells (normalized so start is the top-left) and its extent, row count, column count and total cell count. Inputsrange*string
Returns
{ start, end, rows, columns, cells, normalized } |
$0.004 |
stats
stats.openverbs.com
4 endpoints
| |
/v1/summaryDescriptive summary Full descriptive summary of a numeric sample: count, sum, min/max/range, mean, median, mode(s), variance, standard deviation and the quartiles (q1/q3/iqr). Set sample=true for the sample variance/stdev (÷ n-1) instead of the population form (÷ n). Inputsdata*arraysampleboolean
Returns
{ count, sum, min, max, range, mean, median, mode, variance, stdev, q1, q3, iqr } |
$0.004 |
/v1/percentilePercentiles / quantiles Evaluate one or more percentiles (0, 100) of a numeric sample using linear interpolation between order statistics (the R-7 / Excel PERCENTILE.INC method). 50 is the median, 25/75 the quartiles. Inputsdata*arraypercentiles*array
Returns
{ results: [{ percentile, value }] } |
$0.004 |
/v1/correlationPearson correlation Pearson correlation coefficient and covariance of two equal-length paired series. Rejected as a clean 400 if the lengths differ or either series has zero variance (correlation undefined). Inputsx*arrayy*array
Returns
{ n, pearson, covariance } |
$0.004 |
/v1/regressionLinear regression Ordinary-least-squares linear regression of y on x: slope, intercept, correlation r and coefficient of determination r². Pass predictAt to also evaluate the fitted line at a given x. Rejected as a clean 400 if lengths differ or x has zero variance. Inputsx*arrayy*arraypredictAtnumber
Returns
{ slope, intercept, r, r2, predict } |
$0.004 |
text
text.openverbs.com
4 endpoints
| |
/v1/caseConvert case Recase a string into camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, path/case, Sentence case, Capital Case, Train-Case, no case, Title Case, or plain UPPER/lower, the word boundaries are detected regardless of the input casing. Inputstext*stringtarget*string
Returns
{ text, target } |
$0.002 |
/v1/encodeEncode text Encode a UTF-8 string into base64, base64url, hex, base32, or URL percent-encoding. Inputstext*stringencoding*string
Returns
{ text, encoding } |
$0.002 |
/v1/decodeDecode text Decode a base64, base64url, hex, base32, or URL percent-encoded string back into UTF-8 text. Malformed input for the chosen encoding is rejected as a clean 400. Inputstext*stringencoding*string
Returns
{ text, encoding } |
$0.002 |
/v1/diffDiff text Diff two texts. The default `unified` mode returns a unified-diff patch string; `lines`, `words`, and `chars` modes return a structured array of added/removed/unchanged parts. Inputsa*stringb*stringmodestring
Returns
{ mode, changed, patch?, parts? } |
$0.002 |
tokens
tokens.openverbs.com
1 endpoint
| |
/v1/countCount tokens Count the LLM tokens in text for a given model or encoding, exact for OpenAI and open models (Llama, Mistral, Qwen, Gemma, DeepSeek, Command-R); labelled-approximate for Claude & Gemini. Inputstext*stringmodelstringencodingstring
Returns
The token count (tokens) of the text under the resolved tokenizer, the echoed model, characters, and exact (false with a note for Claude/Gemini approximations or an unknown model) |
$0.004 |
unit
unit.openverbs.com
2 endpoints
| |
/v1/convertConvert units Convert a value between units, length, mass, volume, temperature, area, speed, pressure, energy, power, digital storage, time, angle, frequency and more. Unknown units or a conversion between incompatible measures (e.g. kg → km) are rejected as a clean 400. Inputsvalue*numberfrom*stringto*string
Returns
{ value, from, to, measure } |
$0.002 |
/v1/listList units List the supported units and their metadata (abbreviation, measure, system, singular/plural names), optionally filtered to a single measure, a discovery endpoint for choosing valid `from`/`to` values. Inputsmeasurestring
Returns
{ measure?, count, units: [{ abbr, measure, system, singular, plural }] } |
$0.002 |
content
braille
braille.openverbs.com
4 endpoints
| |
|---|---|
/v1/encodeText to braille Transcribe text to Unicode braille (grade-1 / uncontracted English braille), with capital and number signs. Characters with no grade-1 representation are clean 400s. Inputstext*string
Returns
{ braille, cellCount } |
$0.002 |
/v1/decodeBraille to text Transcribe a Unicode braille string back to text, honouring capital and number signs. Non-braille or unmapped cells are clean 400s. Inputsbraille*string
Returns
{ text } |
$0.002 |
/v1/to-dotsBraille cells to dot numbers Break a braille string into its cells and the raised-dot numbers (1, 8) of each cell. Inputsbraille*string
Returns
{ cells: [{ char, dots }] } |
$0.002 |
/v1/from-dotsDot numbers to braille cells Build braille cells from raised-dot numbers (each cell an array of 1, 8). Out-of-range or repeated dots are clean 400s. Inputscells*array
Returns
{ braille, cells: [{ dots, char }] } |
$0.002 |
emoji
emoji.openverbs.com
4 endpoints
| |
/v1/lookupLook up an emoji Resolve an emoji by its shortcode (e.g. "smile" or ":smile:") or exact name. Provide exactly one field. Returns the emoji, its metadata and code points. Inputsshortcodestringnamestring
Returns
{ emoji, name, category, aliases, tags, codePoints } |
$0.002 |
/v1/searchSearch emoji Fuzzy-search emoji by name, shortcode or keyword tag, ranked exact → prefix → substring. Inputsquery*stringlimitinteger
Returns
{ matches: [{ emoji, name, aliases, tags, codePoints }], count } |
$0.002 |
/v1/infoInspect an emoji Given an emoji character (or any string), return its code points and, if known, its name, category, shortcodes and tags. An unknown emoji is a successful result with `known:false`, not an error. Inputsemoji*string
Returns
{ emoji, codePoints, name, category, aliases, tags, known } |
$0.002 |
/v1/flagCountry flag emoji Build the flag emoji for an ISO 3166-1 alpha-2 country code from its regional-indicator symbols (e.g. "US" → 🇺🇸). Non two-letter codes are clean 400s. Inputscountry*string
Returns
{ country, emoji, codePoints } |
$0.002 |
html
html.openverbs.com
4 endpoints
| |
/v1/encodeHTML entity encode Encode text to HTML entities so it can be safely embedded in markup. By default uses hex numeric references; set useNamedReferences for named entities (&, ©) or encodeEverything to encode every character. Inputstext*stringuseNamedReferencesbooleanencodeEverythingboolean
Returns
{ encoded } |
$0.002 |
/v1/decodeHTML entity decode Decode HTML entities (named, decimal and hex numeric references) back into plain text. Inputshtml*string
Returns
{ decoded } |
$0.002 |
/v1/stripStrip HTML to text Remove all HTML tags, returning the plain text content. Entities are decoded to real characters by default (set decodeEntities=false to keep them encoded). Inputshtml*stringdecodeEntitiesboolean
Returns
{ text } |
$0.002 |
/v1/sanitizeSanitize HTML Sanitize untrusted HTML to a safe allowlist. Keeps common formatting and links but removes dangerous scripting tags, inline event handlers and unsafe URL schemes. Ideal for rendering user-supplied HTML. Inputshtml*string
Returns
{ sanitized } |
$0.002 |
inflect
inflect.openverbs.com
4 endpoints
| |
/v1/pluralizePluralize Return the plural form of an English word (handles irregulars, person → people, mouse → mice). Inputsword*string
Returns
{ word, plural, isAlreadyPlural } |
$0.002 |
/v1/singularizeSingularize Return the singular form of an English word (handles irregulars, people → person, mice → mouse). Inputsword*string
Returns
{ word, singular, isAlreadySingular } |
$0.002 |
/v1/countCount-aware phrasing Choose the singular or plural form for a given count, e.g. (apple, 3) → "apples", (apple, 1) → "apple". By default the count is prepended ("3 apples"); set includeCount=false to omit it. Inputsword*stringcount*integerincludeCountboolean
Returns
{ word, count, form, result } |
$0.002 |
/v1/caseCase conversion Split an identifier or phrase into words and render it in every common case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, path/case, Title Case and Sentence case. Handles acronyms (HTMLParser → html parser). Inputstext*string
Returns
{ text, words, camel, pascal, snake, kebab, constant, dot, path, title, sentence } |
$0.002 |
markdown
markdown.openverbs.com
3 endpoints
| |
/v1/renderRender Markdown Render GitHub-Flavored Markdown to HTML. Output is sanitized by default (scripts, event handlers and javascript: URLs removed); set sanitize=false to keep raw HTML. Inputsmarkdown*stringsanitizeboolean
Returns
{ html, sanitized } |
$0.002 |
/v1/tocTable of contents Extract the heading outline from Markdown, depth, text and a unique GitHub-style anchor slug for each heading. Optionally limit to a maximum heading depth. Inputsmarkdown*stringmaxDepthinteger
Returns
{ headings: [{ depth, text, slug }] } |
$0.002 |
/v1/frontmatterParse front-matter Split YAML front-matter from a document, returns the parsed metadata object and the remaining content body. Malformed YAML is rejected as a clean 400. Inputstext*string
Returns
{ data, content, isEmpty } |
$0.002 |
pdf
pdf.openverbs.com
1 endpoint
| |
/v1/extractPDF Text Extraction Extract plain text and metadata (title, author, producer, page count) from a PDF supplied by URL or base64, heavy pdf.js parsing an agent can't self-run. InputsurlstringpdfstringmaxPagesintegerperPageboolean
Returns
The source (url|inline), final url, total pages, extractedPages, truncated, characters, the extracted text (and perPage[] when requested), and document info (title/author/subject/keywords/creator/producer/dates/pdfVersion/encrypted) |
$0.006 |
web
web.openverbs.com
9 endpoints
| |
/v1/extractExtract readable content Fetch a URL and return its main article as clean HTML, Markdown and plain text. Inputsurl*string
Returns
The final url, title, byline, excerpt, siteName, lang, publishedTime, length/wordCount, and the article as content (HTML), markdown and text |
$0.006 |
/v1/unfurlUnfurl link preview Fetch a URL and return link-preview metadata from Open Graph, Twitter Card and standard meta tags. Inputsurl*string
Returns
The final url, title, description, siteName, type, image, favicon, themeColor, canonical and author (absolute URLs where applicable) |
$0.006 |
/v1/structuredExtract structured data Fetch a URL and pull out its machine-readable structured data: all JSON-LD blocks (schema.org), Open Graph and Twitter Card tags, standard named meta tags, and inline microdata items. Also returns the page title, canonical URL, language and the distinct schema.org types found. Ideal for turning a product, article, recipe, event or organization page into structured fields without bespoke scraping. Inputsurl*string
Returns
The final url, title, canonical, lang, schemaTypes (distinct schema.org types), jsonld (parsed JSON-LD objects), openGraph, twitter, meta (named tags) and microdata ([{ type, properties }]) |
$0.006 |
/v1/sitemapDiscover and parse sitemaps Discover a site's XML sitemaps (via robots.txt Sitemap: directives, an explicit sitemap URL, or the conventional /sitemap.xml) and parse them into a bounded list of URLs with their lastmod, changefreq and priority. Follows sitemap-index files to their child sitemaps. Fetches and URL counts are capped (with a `truncated` flag) to stay fast and memory-bounded. The reliable way for an agent to enumerate a site's pages. Inputsurl*string
Returns
The input url, origin, robotsUrl, sitemapUrls (sitemap files parsed), urlCount, urls ([{ loc, lastmod, changefreq, priority }]) and truncated |
$0.006 |
/v1/headersInspect HTTP response headers Fetch a URL (following redirects) and return the final response's HTTP headers, the server banner and content-type, plus a security-header audit reporting HSTS, Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy and the cross-origin policies (with the missing ones listed). No body is downloaded or parsed. Inputsurl*string
Returns
The requested url, finalUrl, status, redirected/redirectCount, the full headers map, pulled-out server and contentType, and a security object (each header's value or null, plus missing) |
$0.003 |
/v1/redirectsTrace URL redirect chain Follow a URL's redirect chain (301/302/303/307/308) to its final destination and return every hop with its status and Location. Unwraps link shorteners and cloaked/tracking links so an agent can see where a link really goes before following it. Each hop is SSRF-validated and the chain is capped. Inputsurl*string
Returns
The requested url, finalUrl, final status, redirected/redirectCount, the ordered chain ([{ url, status, location }]) and truncated |
$0.003 |
/v1/robotsCheck robots.txt crawl rules Fetch a site's robots.txt and evaluate crawl permissions: given a URL (plus optional extra paths) and a user-agent, return whether each path is allowed or disallowed, the rule that matched, the user-agent group, the crawl-delay and any declared sitemaps. Implements the Robots Exclusion Protocol (RFC 9309) with longest-match-wins, Allow-over-Disallow tie-breaking and * / $ wildcards. Inputsurl*stringuserAgentstringpathsarray
Returns
The robotsUrl, fetched, status, evaluated userAgent, matched groupUserAgent, crawlDelay, sitemaps, and results ([{ path, allowed, matchedRule, directive }]) |
$0.006 |
/v1/linksExtract and classify page links Fetch a URL and extract every hyperlink on the page, each resolved to an absolute URL and classified as internal vs external (by registrable host), with its anchor text, rel attributes (nofollow, sponsored, ugc) and whether it opens in a new tab. Returns internal/external/nofollow counts. For SEO link audits, internal-linking analysis and outbound-link/nofollow compliance checks. Inputsurl*string
Returns
The url, host, total, internalCount, externalCount, nofollowCount, truncated and links ([{ url, anchor, rel, internal, nofollow, sponsored, ugc, newTab }]) |
$0.006 |
/v1/seo-auditOn-page SEO audit Fetch a public page and grade its on-page SEO: title and meta-description length, H1 and heading outline, canonical, meta-robots indexability, viewport/lang/charset, hreflang, Open Graph and Twitter Card completeness, image alt coverage and word count, plus optional focus-keyword placement and density. Returns a pass/warn/fail verdict per check and an overall 0, 100 score. Inputsurl*stringkeywordstring
Returns
The final url, title {text,length,ok}, metaDescription {text,length,ok}, headings {h1,h1Count,outline}, canonical, metaRobots {index,follow,raw}, openGraph {present,missing}, twitterCard, hreflang, images {total,withAlt,altCoverage}, lang, viewport, charset, wordCount, optional keyword placement, the per-rule checks ([{id,status,detail}]) and an overall score (0, 100) |
$0.006 |
crypto
chain
chain.openverbs.com
27 endpoints
| |
|---|---|
/v1/gasCurrent gas Live gas conditions for an EVM chain: current gas price, the latest block's base fee (EIP-1559) and the suggested max priority fee, all in both wei and gwei. Ground truth an agent can't compute. Reads live on-chain data with automatic endpoint fallback. Inputschainstring
Returns
{ chain, chainId, blockNumber, gasPriceWei/Gwei, baseFeePerGasWei/Gwei, maxPriorityFeePerGasWei/Gwei }. stale: true (with cachedAt) if served from cache |
$0.002 |
/v1/addressOn-chain Wallet Balance (native) Native ETH / wallet balance for an address on any EVM chain: native balance (wei + ether), transaction count (nonce), and whether it's a contract or an externally-owned account (with deployed code size). Reads live on-chain data with automatic endpoint fallback. Inputsaddress*stringchainstring
Returns
{ chain, chainId, address, isContract, balanceWei, balanceEth, nonce, codeSizeBytes }. stale: true (with cachedAt) if served from cache |
$0.002 |
/v1/tokenERC-20 Token Metadata Live ERC-20 metadata read directly from the contract: name, symbol, decimals and total supply (raw + decimal-formatted). Handles both string and legacy bytes32 name/symbol encodings. Returns `isToken:false` for EOAs or non-token contracts. Reads live on-chain data with automatic endpoint fallback. Inputsaddress*stringchainstring
Returns
{ chain, chainId, address, isToken, name, symbol, decimals, totalSupply, totalSupplyFormatted }. stale: true (with cachedAt) if served from cache |
$0.002 |
/v1/token-balanceERC-20 Token Balance Live ERC-20 token balance held by a wallet: calls `balanceOf(address)` on the token contract and returns the raw balance plus a decimal-formatted amount (using the token's own decimals) with its symbol. Distinct from `address` (native ETH balance) and `token` (contract metadata). Reads live on-chain data with automatic endpoint fallback. Inputsaddress*stringtoken*stringchainstring
Returns
{ chain, chainId, address, token, isToken, symbol, decimals, balanceRaw, balanceFormatted }. stale: true (with cachedAt) if served from cache |
$0.002 |
/v1/token-allowanceERC-20 Token Allowance API Live ERC-20 spending allowance an owner has granted a spender: calls `allowance(owner, spender)` on the token and returns the raw amount, a decimal-formatted amount (using the token's decimals) with its symbol, and an `isUnlimited` flag for effectively-infinite approvals. Use it to audit token approvals / approval risk before signing. Reads live on-chain data with automatic endpoint fallback. Inputstoken*stringowner*stringspender*stringchainstring
Returns
{ chain, chainId, token, owner, spender, isToken, symbol, decimals, allowanceRaw, allowanceFormatted, isUnlimited }. stale: true (with cachedAt) if served from cache |
$0.002 |
/v1/gas-estimateOnchain Gas Estimate & Tx Simulation API Simulate a transaction before signing: runs `eth_estimateGas` for `{ to, from?, data?, value? }` and returns the estimated gas units and estimated fee (current gas price x gas, in wei + ETH). If the node rejects the call it returns `ok:false` with the decoded `revertReason` (why it would fail) instead of erroring. Reads live on-chain state with automatic endpoint fallback. Inputsto*stringfromstringdatastringvaluestringchainstring
Returns
{ chain, chainId, to, from, ok, gas, revertReason, gasPriceWei, gasPriceGwei, estCostWei, estCostEth }. stale: true (with cachedAt) if served from cache |
$0.004 |
/v1/txOn-chain Transaction Lookup Live status and details of a transaction by hash: success/failed/pending, from/to, value (wei + ether), nonce, block number, gas used, effective gas price and any created contract address. Returns `found:false` for unknown hashes. Reads live on-chain data with automatic endpoint fallback. Inputshash*stringchainstring
Returns
{ chain, chainId, hash, found, status, from, to, valueWei, valueEth, nonce, blockNumber, gasUsed, effectiveGasPriceWei, contractAddress }. stale: true if served from cache |
$0.003 |
/v1/blockOn-chain Block / Height Live block summary by number, hex, or tag (latest/earliest/pending/safe/finalized; default latest): number, hash, parent, timestamp (unix + ISO), transaction count, gas used/limit, base fee and miner. Reads live on-chain data with automatic endpoint fallback. Inputschainstringblockstring|integer
Returns
{ chain, chainId, number, hash, parentHash, timestamp, isoTime, txCount, gasUsed, gasLimit, baseFeePerGasWei/Gwei, miner }. stale: true if served from cache |
$0.001 |
/v1/logsOnchain Event Logs & ERC-20 Transfers API Query a contract's event logs over a bounded block range via `eth_getLogs`: filter by `address` (required) and optional `topics`, get back raw logs (topics, data, block, tx hash, log index) with ERC-20/721 Transfer logs auto-decoded to `{from, to, value}`. Block span is capped (large windows are clamped); results are capped by `limit`. Reads live on-chain data with automatic endpoint fallback. Inputsaddress*stringtopicsarrayfromBlock*string|integertoBlockstring|integerlimitintegerchainstring
Returns
{ chain, chainId, address, fromBlock, toBlock, count, truncated, clamped, logs: [{ address, topics, data, blockNumber, transactionHash, logIndex, removed, decoded? }] }. stale: true if served from cache |
$0.006 |
/v1/receiptTransaction Receipt API Live transaction receipt by hash via `eth_getTransactionReceipt`: success/failed status, block number, from/to, created contract address, gas used, cumulative gas, effective gas price (wei + gwei), tx type and the emitted event logs (capped). Complements `tx` (which reads the transaction itself). Returns `found:false` for unknown/pending hashes. Reads live on-chain data with automatic endpoint fallback. Inputshash*stringchainstring
Returns
{ chain, chainId, hash, found, status, blockNumber, from, to, contractAddress, gasUsed, cumulativeGasUsed, effectiveGasPriceWei/Gwei, type, logsCount, logs: [{ address, topics, data, logIndex }] }. stale: true if served from cache |
$0.003 |
/v1/proxyProxy Implementation Detection API Detect whether a contract is an upgradeable proxy and resolve its implementation: reads the standard EIP-1967 implementation/admin/beacon slots, EIP-1822 (UUPS), the OpenZeppelin legacy slot, and EIP-1167 minimal-proxy bytecode. Returns the proxy type, implementation, admin and beacon addresses when present. Reads live on-chain data with automatic endpoint fallback. Inputsaddress*stringchainstring
Returns
{ chain, chainId, address, isContract, isProxy, proxyType, implementation, admin, beacon }. proxyType ∈ eip1967|eip1967-beacon|uups|oz-legacy|eip1167-minimal|null. stale: true if served from cache |
$0.004 |
/v1/explainExplain a transaction Decode a transaction into plain language: native ETH transfer, contract call (with decoded method name for common ERC-20/DEX functions like transfer, approve, swap, mint, multicall) or contract creation; ERC-20 and NFT (ERC-721) transfers it triggered (token, from, to, amount/tokenId from logs); gas spent in ETH; success/failed/pending; and a one-line summary. Reads live on-chain data with automatic endpoint fallback. Inputshash*stringchainstring
Returns
{ chain, chainId, hash, found, status, kind, method, methodName, from, to, valueEth, gasUsed, gasCostEth, transfers: [{ token, from, to, valueRaw }], nftTransfers: [{ token, from, to, tokenId }], logCount, summary }. stale: true if served from cache |
$0.006 |
/v1/token-riskERC-20 token risk scan Deterministic risk screen of an ERC-20 token from on-chain bytecode and metadata, no third-party risk API. Flags privileged or abuse capabilities: blacklist/freeze, owner mint, pausable transfers, upgradeable proxy and a privileged owner, plus tokens missing symbol/decimals or code. Returns each flag with a severity, a 0-100 score and a verdict. Reads live on-chain data with automatic endpoint fallback. Inputsaddress*stringchainstring
Returns
{ chain, chainId, address, isContract, name, symbol, decimals, totalSupply, totalSupplyFormatted, flags: [{ code, severity, message }], score, verdict }. stale: true if served from cache |
$0.006 |
/v1/ens-resolveENS Name Resolution Resolve an ENS name (like alice.eth) to its Ethereum address, read live from the ENS resolver on Ethereum mainnet. Offchain names such as *.base.eth resolve too. Returns `found:false` (a real answer, not an error) when the name has no address record. Live reads with automatic endpoint fallback. Inputsname*string
Returns
{ name, address, found }. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/ens-reverseENS Reverse Lookup API (address to name) Reverse-resolve an Ethereum address to its primary ENS name (the reverse record set by the owner), read live on Ethereum mainnet. Returns `found:false` when the address has no primary name set. Live reads with automatic endpoint fallback. Inputsaddress*string
Returns
{ address, name, found }. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/ens-recordsENS Text Records API Read an ENS name's address plus its text records (avatar, url, email, description, com.twitter, com.github and more) in one call, live from the resolver on Ethereum mainnet. Pass `keys` to fetch specific records, or omit it for a sensible default set. Only records that are set are returned. Live reads with automatic endpoint fallback. Inputsname*stringkeysarray
Returns
{ name, address, records: { <key>: <value> }, keys, found }. stale: true (with cachedAt) if served from cache |
$0.002 |
/v1/nft-metadataNFT metadata Resolve one NFT (contract + tokenId) into normalized metadata: name, description, image, attributes and token standard (ERC-721 or ERC-1155). Reads the on-chain tokenURI/uri, then fetches and normalizes the metadata document (ipfs/ar/http/data), rewriting ipfs image links to a gateway URL. Returns `found:false` for non-NFT contracts. Live reads with automatic endpoint fallback. Inputscontract*stringtokenId*string|integerchainstring
Returns
{ chain, chainId, contract, tokenId, found, tokenStandard, contractName, name, description, image, imageRaw, animationUrl, externalUrl, attributes, tokenUri, tokenUriRaw, metadata }. stale: true if served from cache |
$0.006 |
/v1/decodeDecode calldata / function selector Turn a 4-byte function selector or full calldata into its human-readable function signature, and (when calldata is present) the decoded argument values. Supply an `abi` for a fully deterministic offline decode, or omit it to look the selector up in public signature registries. Reads with automatic fallback. Inputsdatastringselectorstringabiarray|string
Returns
{ selector, source, name, signature, signatures, inputs, args, argsDecoded, note? }. stale: true if served from cache |
$0.004 |
/v1/abiContract ABI & verification (get ABI) Get the verified contract ABI and verification metadata for a deployed contract by address, sourced from Sourcify. Returns the contract ABI (to decode or call it), contract name, compiler/language, match type, and proxy resolution (is-proxy plus implementation addresses). Supports Ethereum, Base, Arbitrum, Optimism, Polygon. Unverified contracts return `verified:false`. Live reads with cache fallback. Inputsaddress*stringchainstring
Returns
{ chain, chainId, address, verified, matchType, contractName, language, compiler, abi, proxy: { isProxy, proxyType, implementations }, verifiedAt }. stale: true (with cachedAt) if served from cache |
$0.006 |
/v1/sourceVerified contract source code (get source) Get the verified Solidity/Vyper source code for a deployed contract by address, sourced from Sourcify. Returns every source file (path + content), the contract name, language, compiler version and compiler settings (optimizer, evmVersion), the full human-readable source an agent needs to read, audit or feed to an LLM. Supports Ethereum, Base, Arbitrum, Optimism, Polygon. Unverified contracts return `verified:false`. Live reads with cache fallback. Inputsaddress*stringchainstring
Returns
{ chain, chainId, address, verified, matchType, contractName, fullyQualifiedName, language, compiler, settings, sources: [{ path, content, truncated }], fileCount, totalBytes, truncated, verifiedAt }. stale: true (with cachedAt) if served from cache |
$0.006 |
/v1/read-contractRead contract (call a view function) Call a read-only (view/pure) function on any deployed contract via eth_call and get the decoded result. Give the contract address and a human-readable signature (e.g. 'balanceOf(address) view returns (uint256)') plus args; include return types to decode outputs, else raw hex is returned. Reads allowances, oracle prices and vault/DAO state. Read-only, no signing. Ethereum, Base, Arbitrum, Optimism, Polygon. Inputsaddress*stringfunction*stringchainstringargsarrayblockinteger|string
Returns
{ chain, chainId, address, function, selector, block, success, reverted, outputs, outputsNamed, raw, error?, note? }. stale: true (with cachedAt) if served from cache |
$0.006 |
/v1/sanctionsOFAC sanctions screening for a crypto address Screen a crypto wallet address against the OFAC SDN sanctions list (US Treasury Specially Designated Nationals) before transacting. Multi-chain across ~20 assets (BTC, ETH, USDT, TRX, XMR and more); EVM 0x addresses match case-insensitively. Returns whether the address is sanctioned plus the listed entity, asset and list publish date. Clean address returns `sanctioned:false`. Public-domain OFAC data. Inputsaddress*string
Returns
{ address, sanctioned, asset, entity, uid, source:"OFAC SDN", asOf, listSize }. sanctioned:false for a clean address. stale:true (with cachedAt) if served from a cached list after a refresh failure |
$0.006 |
/v1/bytecodeContract bytecode and code hash Fetch deployed EVM contract runtime bytecode and its Keccak-256 code hash to fingerprint or compare contracts, or feed a disassembler. Supports Ethereum, Base, Arbitrum, Optimism and Polygon, with optional historical block reads. Returns full hex code, byte size and isContract; an empty-code address returns 0x and a null hash. Key-free RPC with endpoint fallback; code capped at 256 KiB. Inputsaddress*stringchainstringblockinteger|string
Returns
{ chain, chainId, address, isContract, bytecode, size, codeHash, block, stale, cachedAt? }. Runtime code, not creation code. Empty code is not proof of an EOA (e.g. precompiles). Stale cache is scoped to chain, address and requested block |
$0.006 |
/v1/btc-feesBitcoin recommended fees Live recommended Bitcoin transaction fee rates (in sat/vB) for next-block, ~30-minute, ~1-hour, economy and minimum confirmation targets, straight from the mempool. Also estimates the total fee (in sats and BTC) for a transaction of the given virtual size, so an agent can pick a fee tier and know the cost before broadcasting. InputstxvBytesinteger
Returns
{ fastestFee, halfHourFee, hourFee, economyFee, minimumFee, unit:"sat/vB", txvBytes, estimate: { fastest, halfHour, hour, economy, minimum } (each { sats, btc }), source, stale, cachedAt? } |
$0.006 |
/v1/btc-mempoolBitcoin mempool congestion Live snapshot of the Bitcoin mempool: number of unconfirmed transactions, total pending virtual size (bytes and MB), the current backlog in blocks, total fees pending (sats and BTC), the fee-rate histogram, and the current chain tip height. Lets an agent gauge network congestion and time a transaction. InputsJSON body
Returns
{ count, vsizeBytes, vsizeMB, backlogBlocks, totalFeeSat, totalFeeBtc, tipHeight, feeHistogram: [{ feeRate, vsize }], source, stale, cachedAt? } |
$0.006 |
/v1/btc-addressBitcoin address balance & history Balance and activity for a Bitcoin address (base58 1…/3… or bech32 bc1…): confirmed balance (sats and BTC), total received and sent, confirmed transaction count, and unconfirmed/pending value and tx count from the mempool. On-chain ground truth an agent cannot compute locally. Inputsaddress*string
Returns
{ address, found, balanceSat, balanceBtc, totalReceivedSat, totalSentSat, txCount, pendingSat, pendingTxCount, source, stale, cachedAt? } |
$0.006 |
/v1/btc-txBitcoin transaction status Look up a Bitcoin transaction by txid: confirmation status, block height and time, fee (sats), effective fee rate (sat/vB), size, weight and virtual size, input and output counts, and total output value (sats and BTC). On-chain ground truth for verifying a payment. Inputstxid*string
Returns
{ txid, found, confirmed, blockHeight, blockTime, feeSat, feeRate, sizeBytes, weight, vsize, inputCount, outputCount, totalOutputSat, totalOutputBtc, source, stale, cachedAt? } |
$0.006 |
crypto
crypto.openverbs.com
24 endpoints
| |
/v1/priceCrypto & Token Prices Crypto & token prices: live USD spot price for one or more coins/tokens by coin id, market coins (e.g. "coingecko:bitcoin", "coingecko:ethereum") or any ERC-20 by contract (e.g. "ethereum:0xdAC17..."). Real-time bitcoin, ethereum and token price feed from an open, redistribution-OK source. Unknown ids are returned in `notFound`. Inputscoins*array
Returns
prices[] with each coin's price (USD), symbol, decimals, confidence and timestamp; any unresolved ids in notFound[]. stale: true (with cachedAt) if served from cache after an upstream failure |
$0.001 |
/v1/historyCrypto Price History Token price history: historical USD price series (price chart data) for one coin/token by coin id (e.g. "coingecko:bitcoin", "ethereum:0xdAC17…"). Returns evenly spaced `points` over the last `span` periods. Inputscoin*stringspanintegerperiodstring
Returns
points[] of { timestamp, price } (USD, oldest→newest) for the coin, with its symbol, decimals, confidence and the period used; found: false with empty points for an unknown id. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/market-capCrypto Market Cap & Global Stats Crypto market cap: total cryptocurrency market capitalization (USD), 24h trading volume, Bitcoin (BTC) and Ethereum (ETH) dominance, 24h market-cap change and active coin/market counts. Whole-market context behind any single coin's move. Data source: CoinLore. InputsJSON body
Returns
totalMarketCapUsd, total24hVolumeUsd, btcDominancePct, ethDominancePct, marketCapChange24hPct, volumeChange24hPct, activeCoins, activeMarkets, attribution (Data source: CoinLore). stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/trendingTrending crypto, top 24h movers (gainers & losers) Trending crypto by 24h price momentum: the biggest gainers and losers among the top coins by market cap, each with symbol, rank, USD price, 24h change % and market cap. A momentum/discovery signal for agents. Data source: CoinLore. Inputslimitinteger
Returns
gainers[] and losers[] (each { rank, symbol, name, priceUsd, change24hPct, marketCapUsd }), plus scanned (coins considered) and attribution (Data source: CoinLore). stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/tvlTotal value locked Total value locked (USD) for a DeFi protocol (e.g. "aave") or a whole chain (e.g. "Ethereum"). Provide exactly one of `protocol` or `chain`. Inputsprotocolstringchainstring
Returns
tvlUsd for the requested protocol or chain (kind tells which), with found false and tvlUsd null when the name is unknown. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/defi-overviewDeFi Market Overview API DeFi market overview: total value locked (USD) across all chains, the chain count, and the top chains by TVL with each chain's TVL dominance. This is DeFi TVL, not total crypto market cap. InputstopChainsinteger
Returns
totalTvlUsd across all chains, chainCount, and topChains[] of { name, tvlUsd, dominancePct } (highest TVL first). stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/protocolsTop DeFi protocols by TVL Top DeFi protocols ranked by total value locked (USD), with 1d/7d TVL change, category and chains. Optional filters: `chain` (ranks by that chain's TVL) and `category` (e.g. "Dexes", "Lending"). Centralised-exchange reserves are excluded. Inputslimitintegerchainstringcategorystring
Returns
protocols[] of { name, category, chains, tvlUsd, change1dPct, change7dPct } (highest TVL first) and count. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/protocolDeFi Protocol TVL API Total value locked (USD) for one DeFi protocol by DefiLlama slug or name (e.g. "aave-v3", "lido", "uniswap-v3"): current TVL, per-chain TVL breakdown, 1h/1d/7d TVL change, category, chains, token symbol and market cap. Optional `chain` also returns that chain's TVL for the protocol. Unknown names return `found:false` with slug `suggestions`. Inputsprotocol*stringchainstring
Returns
found, protocol ({ name, slug, category, symbol, chains, tvlUsd, chainTvls[], chainTvlUsd, change1hPct, change1dPct, change7dPct, mcapUsd, url }) and suggestions[] when not found. stale: true (with cachedAt) if served from cache |
$0.001 |
/v1/categoriesCrypto Categories & Sectors Crypto categories & sectors ranked by total value locked (USD): each DeFi narrative (e.g. Dexes, Lending, Liquid Staking, Restaking, RWA) with its aggregate TVL, protocol count and share of total DeFi TVL. A map of where capital sits across sectors. Centralised-exchange reserves are excluded. Inputslimitinteger
Returns
categories[] of { category, tvlUsd, protocols, dominancePct } (highest TVL first), plus count (total sectors) and totalTvlUsd. stale: true (with cachedAt) if served from cache |
$0.002 |
/v1/dex-volumeDEX Trading Volume Decentralised exchange (DEX) trading volume: total 24h and 7d USD volume with 1d/7d change, plus the top DEXs by 24h volume. Optional `chain` filter scopes the totals and ranking to one chain. Inputslimitintegerchainstring
Returns
total24hUsd, total7dUsd, change1dPct, change7dPct, and dexs[] of { name, category, volume24hUsd, volume7dUsd, change1dPct, chains } (highest volume first) with count. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/feesProtocol fees & revenue DeFi protocol fees and revenue: total 24h and 7d fees (USD) paid by users across protocols, plus the top protocols by 24h fees with each one's 24h revenue where reported. Optional `chain` filter scopes totals and ranking to one chain. Inputslimitintegerchainstring
Returns
total24hUsd, total7dUsd, and protocols[] of { name, category, fees24hUsd, fees7dUsd, revenue24hUsd, chains } (highest fees first) with count. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/optionsOnchain Options Volume API Onchain options trading volume (premium): total 24h/7d/30d USD volume with 1d/7d change, plus the top options protocols by 24h volume. Optional `chain` filter scopes the totals and ranking to one chain. Inputslimitintegerchainstring
Returns
total24hUsd, total7dUsd, total30dUsd, change1dPct, change7dPct, and protocols[] of { name, category, volume24hUsd, volume7dUsd, change1dPct, chains } (highest volume first) with count. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/dex-aggregatorsDEX aggregator volume (1inch, CowSwap, Jupiter) DEX aggregator trading volume: total 24h/7d/30d USD volume with 1d/7d change, plus the top aggregators (1inch, CowSwap, Jupiter, etc.) by 24h volume. Optional chain filter scopes the totals and ranking to one chain. Inputslimitintegerchainstring
Returns
total24hUsd, total7dUsd, total30dUsd, change1dPct, change7dPct, and aggregators[] of { name, category, volume24hUsd, volume7dUsd, change1dPct, chains } (highest volume first) with count. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/stablecoinsStablecoin supply Stablecoin market: total circulating market cap (USD) and the largest stablecoins by mcap with their peg type, peg mechanism (e.g. fiat-backed, crypto-backed) and dominance. Inputslimitinteger
Returns
totalMcapUsd across all stablecoins, count, and stablecoins[] of { name, symbol, mcapUsd, pegType, pegMechanism, dominancePct } (largest first). stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/yieldsTop DeFi yields Top DeFi yield pools ranked by APY, with optional filters (chain, project, stablecoin-only, minimum TVL). Dust pools below `minTvlUsd` (default $10k) are excluded so reported APYs are meaningful. InputslimitintegerchainstringprojectstringstablecoinbooleanminTvlUsdnumber
Returns
pools[] of { chain, project, symbol, tvlUsd, apy, apyBase, apyReward, stablecoin, ilRisk } (highest APY first) and count. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/stakingCrypto Staking Rewards Crypto staking rewards: live staking APY and TVL for liquid-staking and restaking protocols (Lido, Rocket Pool, ether.fi, Jito, Binance, …), ranked by size. Filter by asset (e.g. ETH, SOL), chain or protocol. Data source: DefiLlama. InputslimitintegerchainstringassetstringprojectstringminTvlUsdnumber
Returns
pools[] of { chain, project, symbol, tvlUsd, apy, apyBase, apyReward } (largest TVL first) and count. stale: true (with cachedAt) if served from cache. Data source: DefiLlama |
$0.003 |
/v1/fear-greedCrypto Fear & Greed Index Crypto sentiment via the live Fear and Greed Index (0-100 with classification, e.g. Fear/Greed). Optionally include a short historical series. Source: alternative.me. Inputslimitinteger
Returns
Latest value (0, 100) and classification (e.g. "Greed") with timestamp, plus a series[] of recent points. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/buzzCrypto web buzz & sentiment - social mentions Web buzz for a coin/token: total count of web mentions (news, blogs, forums) plus an emotion breakdown (happiness, anger, love, sadness, fun) and a 0-1 positivityScore. A social/editorial signal distinct from the market Fear and Greed index and news lists. Inputskeyword*stringpageTypesarray
Returns
totalMentions (web mentions), connotations { anger, happiness, love, sadness, share, fun }, positivityScore (0-1, higher = more positive; null if no emotional mentions), and found |
$0.05 |
/v1/newsCrypto & Financial News Crypto news API: live cryptocurrency news headlines for a query (e.g. "bitcoin etf", "ethereum upgrade", "solana"), from Google News and localised by location/language. Returns ranked articles with title, URL, domain and, where available, source and publish time. Inputsq*stringlocationstringlanguagestringlimitinteger
Returns
The article total and ranked results, each with rank, title, url, domain and (where present) source and timestamp. No results → empty results |
$0.005 |
/v1/trendsCrypto search interest, Google Trends Google Trends search interest for crypto terms (e.g. ["bitcoin","solana"], up to 5): a relative 0-100 popularity series over time, with per-keyword average and latest value. Optional `location` (default worldwide), `timeframe` (7d/30d/90d/12m/5y, default 12m) and `type` (web/news/youtube). Measures retail attention, not on-chain state. Inputskeywords*arraylocationstringtimeframestringtypestring
Returns
interest[] of { date, values } (relative 0, 100 per keyword, in keywords order), plus averages and latest per keyword. found false when Google Trends has no data for the terms |
$0.03 |
/v1/derivativesCrypto Derivatives (Perps, Funding, OI) Crypto perpetual-futures data from on-chain perp DEXs: per market the funding rate (hourly + annualized %), open interest (USD and base units), mark & oracle price, 24h volume and 24h price change. Ranked by open interest; filter by `coins` or `limit`. Data source: Hyperliquid (dYdX fallback). Inputscoinsarraylimitinteger
Returns
markets[] of { coin, markPrice, oraclePrice, fundingRateHourly, fundingRateAnnualizedPct, openInterest, openInterestUsd, premium, volume24hUsd, priceChange24hPct } (highest OI first), plus count, source and attribution. stale: true (with cachedAt) if served from cache |
$0.002 |
/v1/fundingCrypto Perp Funding Rates Live perpetual-futures funding rates per market, each market's funding rate as hourly, the standard 8-hour figure and annualized %, alongside mark price and open interest. Ranked by the most extreme (|annualized|) funding by default; pass `coins` to get the funding rate for a specific market (e.g. ["BTC","ETH"]). Real-time crypto perp funding rate feed. Data source: Hyperliquid (dYdX fallback). Inputscoinsarraylimitinteger
Returns
markets[] of { coin, fundingRateHourly, fundingRate8h, fundingRateAnnualizedPct, markPrice, openInterestUsd } (most extreme |annualized| funding first), plus count, source and attribution. stale: true (with cachedAt) if served from cache |
$0.002 |
/v1/ohlcCrypto Price History (OHLC) Crypto price history as OHLC candles from on-chain perp DEXs: open/high/low/close, base volume and trade count per interval (1m, 5m, 15m, 1h, 4h, 1d) for a coin (BTC, ETH, SOL, and more). Returns up to 500 candles, oldest first. Data source: Hyperliquid (dYdX fallback). Inputscoin*stringintervalstringlimitinteger
Returns
candles[] of { t (ms), open, high, low, close, volume, trades } (oldest first), plus coin, interval, count, source and attribution. count: 0 means the coin is not listed on Hyperliquid or dYdX. stale: true (with cachedAt) if served from cache |
$0.003 |
/v1/orderbookCrypto Order Book (L2 Depth) Live L2 order book for a crypto perp market: aggregated bids and asks with price, size and resting-order count per level, plus the best bid/ask spread, spread % and mid price. Real-time market-depth snapshot for a coin (BTC, ETH, SOL, and more); pass `depth` for how many price levels per side. Data source: Hyperliquid (dYdX fallback). Inputscoin*stringdepthinteger
Returns
bids[] (high→low) and asks[] (low→high) of { px, sz, n? }, plus spread, spreadPct, midPrice, count: { bids, asks }, time, coin, source and attribution. count 0/0 means the coin is not listed on Hyperliquid or dYdX. stale: true (with cachedAt) if served from cache |
$0.002 |
wallet
wallet.openverbs.com
4 endpoints
| |
/v1/validateAddress validation Validate a blockchain address. Supply `chain` to check against a specific chain, or omit it to auto-detect. Ethereum addresses report their EIP-55 checksum state; Bitcoin covers base58check (P2PKH/P2SH) and bech32/bech32m segwit (P2WPKH/P2WSH/P2TR). A well-formed but invalid address returns `valid:false`, not an error. Inputsaddress*stringchainstring
Returns
{ valid, chain, format?, type?, network?, checksum?, reason? } |
$0.004 |
/v1/detectChain detection Guess which chain an address belongs to from its shape and encoding, without requiring the caller to know it up front. Returns the chain, format and address type, or nulls when nothing matches. Inputsaddress*string
Returns
{ chain, format, type, network? } |
$0.004 |
/v1/eip55EIP-55 checksum Apply the EIP-55 mixed-case checksum to an Ethereum address, regardless of its input casing. Returns the checksummed address and whether it differed from the input. Non-hex input is rejected before payment. Inputsaddress*string
Returns
{ address, changed } |
$0.004 |
/v1/normalizeAddress normalisation Normalise an address to its canonical form, Ethereum to its EIP-55 checksummed form, bech32 Bitcoin to lowercase (base58check is left untouched as it is case-sensitive). An address that is not a valid address of a known chain is rejected before payment. Inputsaddress*stringchainstring
Returns
{ address, chain, changed } |
$0.004 |
email
email.openverbs.com
1 endpoint
| |
|---|---|
/v1/validateValidate email Validate an email address, syntax, MX/A deliverability lookup, and disposable / role-based address detection. No mailbox probing. Inputsemail*string
Returns
Whether the address is valid (well-formed + mxFound), its local/domain parts, the mx[] hosts, and disposable / roleBased flags. A reason (INVALID_SYNTAX / NO_MX_RECORD) is set when not valid |
$0.006 |
emailauth
emailauth.openverbs.com
4 endpoints
| |
/v1/spf-parseParse an SPF record Parse an SPF TXT record ("v=spf1 …") into its qualified mechanisms and modifiers. Records that do not start with v=spf1 or use unknown mechanisms are clean 400s. Inputsrecord*string
Returns
{ version, mechanisms: [{ qualifier, type, value }], modifiers, all } |
$0.004 |
/v1/spf-checkEvaluate an SPF record against an IP Evaluate an SPF record against an IPv4/IPv6 address using only its literal ip4/ip6/all mechanisms. DNS-dependent mechanisms (include, a, mx, exists, redirect) reached before a match yield an honest `indeterminate` result rather than a guess. Inputsrecord*stringip*string
Returns
{ result, matched, reason }, result is pass/fail/softfail/neutral/none/indeterminate |
$0.004 |
/v1/dmarc-parseParse a DMARC record Parse a DMARC TXT record ("v=DMARC1; p=…") into its policy, alignment, sampling and reporting tags. Missing or invalid policy/alignment/pct values are clean 400s. Inputsrecord*string
Returns
{ version, policy, subdomainPolicy, pct, rua, ruf, adkim, aspf, tags } |
$0.004 |
/v1/dkim-parseParse a DKIM key record Parse a DKIM public-key DNS TXT record ("v=DKIM1; k=rsa; p=…") into its key type, public key, hash algorithms, service types and flags. An empty `p` is reported as a revoked key. A missing `p` tag is a clean 400. Inputsrecord*string
Returns
{ version, keyType, publicKey, revoked, hashAlgorithms, serviceTypes, flags, notes, tags } |
$0.004 |
finance
edgar
edgar.openverbs.com
4 endpoints
| |
|---|---|
/v1/lookupResolve a ticker or company name to a CIK Resolve a stock ticker symbol or company name to its Central Index Key (CIK) - the identifier every other EDGAR endpoint keys on. Exact ticker matches rank first, then company-name prefix/substring matches. Returns each match's zero-padded CIK, numeric CIK, ticker and official company title. Inputsquery*stringlimitinteger
Returns
{ query, count, results: [{ cik, cikNumber, ticker, title }], source, stale, cachedAt? } |
$0.006 |
/v1/filingsList a company's recent SEC filings SEC filings API: list a company's recent SEC EDGAR filings (10-K, 10-Q, 8-K, Form 4, S-1) by ticker or CIK, optionally filtered by form type. Each filing has its accession number, form, filing/report dates, primary document, XBRL flag and a direct as-filed document URL, plus company name, tickers, exchanges and SIC code. Inputscikstringtickerstringformstringlimitinteger
Returns
{ cik, found, name, tickers, exchanges, sic, sicDescription, form, count, filings: [{ accessionNumber, form, filingDate, reportDate, primaryDocument, primaryDocDescription, isXBRL, url }], source, stale, cachedAt? } |
$0.006 |
/v1/factsRead an XBRL financial fact for a company Read a single XBRL financial concept for a company (by CIK or ticker) from its as-filed statements. Give the concept's XBRL tag (e.g. Revenues, NetIncomeLoss, Assets, EarningsPerShareDiluted) and optionally the taxonomy (default us-gaap, also dei). Returns the label and, per unit (USD, shares), recent datapoints with period end, value, fiscal year/period, form, filing date and accession. Bounded, as-reported output. Inputscikstringtickerstringtaxonomystringconcept*stringlimitinteger
Returns
{ cik, found, entityName, taxonomy, concept, label, description, units: { <unit>: [{ end, start, val, fy, fp, form, filed, frame, accession }] }, latest, source, stale, cachedAt? } |
$0.006 |
/v1/financialsCompany financial statements snapshot Company financials API: one-call snapshot for a US public company (by ticker or CIK) from as-filed SEC XBRL statements, revenue, cost of revenue, gross profit, operating income, net income, EPS (basic/diluted), total assets, total liabilities, stockholders equity, cash, operating cash flow and shares outstanding, each with the latest fiscal-year value. Unknown company returns found=false. Inputscikstringtickerstring
Returns
{ cik, found, entityName, ticker, currency, metrics: { <line item>: { unit, tag, annual: { val, end, fy, fp, form, filed } | null, latest: { val, end, fy, fp, form, filed } | null } }, source, stale, cachedAt? }. Line items: revenue, costOfRevenue, grossProfit, operatingIncome, netIncome, epsBasic, epsDiluted, totalAssets, totalLiabilities, stockholdersEquity, cashAndEquivalents, operatingCashFlow, sharesOutstanding |
$0.008 |
fx
fx.openverbs.com
2 endpoints
| |
/v1/convertConvert currency Convert an amount from one currency to another using reference rates (latest or a historical date). Amount defaults to 1. Inputsfrom*stringto*stringamountnumberdatestring
Returns
The rate and converted result for amount from→to, plus the date the rate is from. Same-currency conversions return rate 1 |
$0.006 |
/v1/ratesExchange rates Reference exchange rates for a base currency against some or all supported currencies (latest or a historical date). Inputsbase*stringsymbolsarraydatestring
Returns
The base, the date, and a rates map of currency → rate |
$0.006 |
games
dice
dice.openverbs.com
3 endpoints
| |
|---|---|
/v1/parseParse dice notation Parse dice notation such as "3d6+2", "4d6kh3" (keep highest 3) or "2d20dl1" (drop lowest 1) into structured terms. Malformed notation is a clean 400. Inputsnotation*string
Returns
{ notation, terms: [{ type, sign, count?, sides?, keep?, keepFrom?, value? }] } |
$0.002 |
/v1/rollRoll dice Roll dice notation with a cryptographically secure RNG, optionally repeated. Returns per-die rolls, the kept dice and the total for each roll. Inputsnotation*stringrollsinteger
Returns
{ notation, results: [{ total, groups: [{ sides, rolls, kept, subtotal, sign }], modifier }] } |
$0.002 |
/v1/statsExact dice statistics Compute the exact probability distribution of a dice notation, mean, variance, standard deviation, min/max and the full probability mass function, with no sampling. Notations whose outcome range is too large for exact computation are clean 400s. Inputsnotation*stringdistributionboolean
Returns
{ notation, min, max, mean, variance, stddev, distribution: [{ value, probability }] | null } |
$0.002 |
location
airport
airport.openverbs.com
3 endpoints
| |
|---|---|
/v1/airportAirport lookup by IATA/ICAO code Look up an airport by its 3-letter IATA code or 4-character ICAO code. Provide exactly one. Returns the airport name, both codes, city, country, coordinates, elevation and type. Inputsiatastringicaostring
Returns
{ ident, type, name, iata, icao, lat, lon, elevationFt, continent, country, region, municipality } |
$0.002 |
/v1/searchSearch airports by name or city Fuzzy-search airports by name, city or code, optionally filtered by ISO country code or airport type. Matches are ranked exact-code/name then prefix then substring, larger airports first. Empty result is a successful 200. Inputsquery*stringcountrystringtypestringlimitinteger
Returns
{ matches: [{ code, name, airport }], count, found } |
$0.002 |
/v1/nearestNearest airports to coordinates Find the airports nearest to a latitude/longitude, ordered by great-circle distance. Optionally cap the search radius (km), result count and airport type. Returns each airport with its distance in km. Inputslat*numberlon*numberradiusKmnumberlimitintegertypestring
Returns
{ matches: [{ distanceKm, airport }], count, found } |
$0.004 |
geocode
geocode.openverbs.com
2 endpoints
| |
/v1/forwardGeocode an address Convert a free-form address or place name into ranked coordinates with a structured, normalized address. Optionally bias by country and language. Inputsq*stringlimitintegercountrystringlangstring
Returns
An attribution field and ranked results, each with lat, lon, formatted address, country/countryCode/state/city/postcode/street/housenumber where known, and a confidence. No match → empty results |
$0.006 |
/v1/reverseReverse geocode Convert latitude/longitude coordinates into the nearest structured address. Optionally set the preferred result language. Inputslat*numberlon*numberlangstring
Returns
An attribution field and results with the nearest formatted address plus structured country/city/postcode/street fields. No match → empty results |
$0.006 |
media
music
music.openverbs.com
5 endpoints
| |
|---|---|
/v1/noteNote parse Parse a note in scientific pitch notation (e.g. "A4", "C#5", "Bb3") into its letter, accidental, pitch class (0..11), octave, MIDI number and frequency in Hz (A4 = 440 Hz). Inputsnote*string
Returns
{ name, letter, accidental, pitchClass, octave, midi, frequency } |
$0.002 |
/v1/intervalInterval between notes Name the interval between two notes (`to` at or above `from`), its size in semitones, its diatonic number and its quality (perfect/major/minor/augmented/diminished). Correct spelling matters: C→F# is an augmented fourth, C→Gb a diminished fifth. Inputsfrom*stringto*string
Returns
{ semitones, number, quality, name } |
$0.002 |
/v1/transposeTranspose a note Transpose a note by a (possibly negative) number of semitones. Result is spelled chromatically with sharps, or flats when `preferFlats` is true. Inputsnote*stringsemitones*integerpreferFlatsboolean
Returns
{ name, midi, frequency } |
$0.002 |
/v1/scaleBuild a scale Build a scale from a root note and type (major, natural-minor, harmonic-minor, melodic-minor, dorian, phrygian, lydian, mixolydian, locrian, major-pentatonic, minor-pentatonic, blues, chromatic). Heptatonic scales and modes are spelled diatonically (F major → F G A Bb C D E). Returns the note names, MIDI numbers and semitone intervals. Inputsroot*stringtype*string
Returns
{ root, type, notes, midi, intervals } |
$0.002 |
/v1/chordBuild a chord Build a chord from a root note and quality (major, minor, dim, aug, maj7, min7, dom7, dim7, half-dim7, sus2, sus4, maj6, min6). Notes are spelled by stacked thirds (C dom7 → C E G Bb). Returns the note names, MIDI numbers and semitone intervals. Inputsroot*stringquality*string
Returns
{ root, quality, notes, midi, intervals } |
$0.002 |
timecode
timecode.openverbs.com
3 endpoints
| |
/v1/parseParse timecode Parse an SMPTE timecode (HH:MM:SS:FF, or HH:MM:SS;FF for drop-frame) at a given frame rate into its components, total frame count and real-time seconds. Drop-frame is auto-detected from a ';' separator unless dropFrame is set. Out-of-range or non-existent drop-frame values are a clean 400. Inputstimecode*stringframeRate*numberdropFrameboolean
Returns
{ timecode, frameRate, dropFrame, hours, minutes, seconds, frames, totalFrames, totalSeconds } |
$0.002 |
/v1/convertConvert / rebase timecode Rebase a timecode (or a raw frame count) from one frame rate to another on a real-time basis, so the wall-clock position is preserved. Give a source frameRate plus timecode or totalFrames, and a toFrameRate (with optional toDropFrame). Returns the target timecode, frame count and seconds. InputsframeRate*numberdropFramebooleantoFrameRate*numbertoDropFramebooleantimecodestringtotalFramesinteger
Returns
{ timecode, totalFrames, totalSeconds, frameRate, dropFrame } |
$0.002 |
/v1/addTimecode arithmetic Add or subtract from a timecode, either another timecode (b) or a raw frame count (frames), at a given frame rate. Uses frame-exact SMPTE math (including drop-frame). A result below zero is rejected as a clean 400. InputsframeRate*numberdropFramebooleana*stringbstringframesintegeroperationstring
Returns
{ timecode, totalFrames, totalSeconds, frameRate, dropFrame } |
$0.002 |
network
dns
dns.openverbs.com
2 endpoints
| |
|---|---|
/v1/resolveResolve DNS records Resolve DNS records for a hostname, A, AAAA, CNAME, MX, TXT, NS, SOA, CAA or SRV. NXDOMAIN or an absent record type returns an empty record set. Inputsname*stringtypestring
Returns
The queried name and type, the records[] (shape varies by type: A/AAAA carry address+ttl, MX exchange+priority, etc.), count, and which public resolver answered |
$0.006 |
/v1/reverseReverse DNS lookup Reverse-resolve an IPv4 or IPv6 address to its PTR hostname(s). No PTR record returns an empty list. This is reverse DNS (PTR), not ENS or onchain name resolution. Inputsip*string
Returns
The ip and its resolved PTR hostnames[], count, and which public resolver answered |
$0.006 |
ip
ip.openverbs.com
4 endpoints
| |
/v1/parseParse & classify IP Parse an IPv4 or IPv6 address and classify it, version, normalized form and RFC range (unicast, private, loopback, linkLocal, multicast, uniqueLocal, ipv4Mapped, …). Detects IPv4-mapped IPv6. Inputsaddress*string
Returns
{ kind, version, address, range, ipv4Mapped? } |
$0.002 |
/v1/subnetSubnet calculator Compute network details of a CIDR block, network & broadcast address, usable host range, total and usable address counts. Works for IPv4 and IPv6 (counts returned as strings for large IPv6 blocks). Honours RFC 3021 for /31. Inputscidr*string
Returns
{ kind, cidr, prefixLength, networkAddress, lastAddress, broadcastAddress?, firstHost, lastHost, numAddresses, usableHosts } |
$0.002 |
/v1/containsCIDR membership Test whether an IP address falls within a CIDR block. A well-formed address of a different family (or simply outside the block) returns contains=false, not an error. Inputscidr*stringaddress*string
Returns
{ cidr, address, contains } |
$0.002 |
/v1/expandExpand / compress IPv6 Return both the fully-expanded (eight 4-hex groups) and canonical compressed (RFC 5952) forms of an address. IPv4 is returned unchanged in both fields. Inputsaddress*string
Returns
{ kind, input, expanded, compressed } |
$0.002 |
macaddress
macaddress.openverbs.com
5 endpoints
| |
/v1/parseParse & normalize a MAC address Parse a MAC / EUI-48 or EUI-64 address from any common notation (colon, hyphen, Cisco dot, or bare hex) and return it in every canonical form plus its integer value. Inputsaddress*string
Returns
{ eui, hex, bytes, colon, hyphen, dot, integer } |
$0.002 |
/v1/infoInspect address properties Report the properties of a MAC address encoded in its first octet: unicast vs multicast (I/G bit), universal vs locally-administered (U/L bit), the broadcast address, and, for EUI-48, the OUI and NIC portions. Inputsaddress*string
Returns
{ eui, unicast, multicast, universal, local, broadcast, oui, nic } |
$0.002 |
/v1/formatReformat a MAC address Reformat a MAC address into the requested notation (colon, hyphen, Cisco dot or bare) and case (lower default or upper). Inputsaddress*stringnotationstringcasestring
Returns
{ formatted } |
$0.002 |
/v1/to-eui64EUI-48 → EUI-64 / IPv6 IID Derive the modified EUI-64 interface identifier from a 48-bit MAC (insert FFFE, flip the U/L bit) and the resulting IPv6 link-local address (fe80::/64). Inputsaddress*string
Returns
{ eui64, interfaceId, linkLocal } |
$0.002 |
/v1/generateGenerate a random MAC address Generate a random EUI-48 MAC address. By default it is locally-administered and unicast (safe for testing); set `local:false` for a universal-bit address or `multicast:true` for a group address. Inputslocalbooleanmulticastboolean
Returns
{ address, local, multicast } |
$0.002 |
rdap
rdap.openverbs.com
1 endpoint
| |
/v1/domainDomain registration Look up a domain's RDAP registration data, registrar, status, creation/expiry/update dates, nameservers and DNSSEC. Unregistered domains return found:false. Inputsdomain*string
Returns
Whether the domain was found, its registrar, status[], createdAt/updatedAt/expiresAt dates, nameservers[] and dnssec flag |
$0.006 |
tls
tls.openverbs.com
1 endpoint
| |
/v1/inspectInspect SSL/TLS certificate Open an SSL/TLS connection to a host and report its certificate, issuer, subject, validity window, days remaining, SANs, fingerprint and trust status. Inputshost*stringportintegerservernamestring
Returns
Whether the host was reachable, and its certificate, subject, issuer, validFrom/validTo, daysRemaining, expired, subjectAltNames, fingerprint256, negotiated protocol and authorized (trusted chain) |
$0.006 |
reference
holidays
holidays.openverbs.com
2 endpoints
| |
|---|---|
/v1/listList holidays List a country's holidays for a calendar year (optionally by state/region, language and type). Inputscountry*stringstatestringregionstringlanguagestringtypesarrayyear*integer
Returns
The holidays[] (each with date, name, type) for the country/year, a count, and an attribution string |
$0.002 |
/v1/checkCheck a date Check whether a specific date is a public holiday in a country (optionally by state/region). Inputscountry*stringstatestringregionstringlanguagestringtypesarraydate*string
Returns
isHoliday for the date, the matching holidays[] (if any), and an attribution string |
$0.002 |
iso
iso.openverbs.com
4 endpoints
| |
/v1/countryISO 3166-1 country lookup Look up a country by its ISO 3166-1 alpha-2 code, alpha-3 code, numeric code or English name. Provide exactly one field. Returns all codes plus the UN region. Inputsalpha2stringalpha3stringnumericstringnamestring
Returns
{ alpha2, alpha3, numeric, name, region } |
$0.002 |
/v1/currencyISO 4217 currency lookup Look up an active ISO 4217 currency by its alphabetic code or numeric code. Provide exactly one field. Returns the code, numeric code, name and number of minor units (decimal places). Inputscodestringnumericstring
Returns
{ code, numeric, name, minorUnit } |
$0.002 |
/v1/languageISO 639 language lookup Look up a language by its ISO 639-1 alpha-2 code, ISO 639-2 alpha-3 code (bibliographic or terminologic) or English name. Provide exactly one field. Inputsalpha2stringalpha3stringnamestring
Returns
{ alpha3, alpha3t, alpha2, name } |
$0.002 |
/v1/searchSearch ISO registries Fuzzy-search countries, currencies and languages by name or code. Scope with `registry` (defaults to all). Matches are ranked exact-code/name → prefix → substring. Inputsquery*stringregistrystringlimitinteger
Returns
{ matches: [{ registry, code, name, record }], count } |
$0.002 |
wikidata
wikidata.openverbs.com
2 endpoints
| |
/v1/searchSearch Wikidata Search Wikidata for entities matching a text query, returning candidate Q-ids with labels and descriptions. Inputsquery*stringlanguagestringlimitinteger
Returns
The query, language, and a results[] of { id, label, description, url } candidate entities |
$0.006 |
/v1/entityGet Wikidata entity Fetch a Wikidata entity by Q-id: label, description, aliases and its claims (property → values). Inputsid*stringlanguagestring
Returns
The entity id, whether it was found, its label/description, aliases[], a claims map (property id → values) and its Wikidata url |
$0.006 |
science
astro
astro.openverbs.com
4 endpoints
| |
|---|---|
/v1/julian-dateAstronomical Julian Date Compute the astronomical Julian Date (JD, fractional, epoch noon 1 Jan 4713 BC) and Modified Julian Date (MJD = JD − 2400000.5) of a UTC instant. Unlike `calendar`'s integer Julian Day Number, this carries the time-of-day fraction. Inputsyear*integermonth*integerday*integerhourintegerminuteintegersecondinteger
Returns
{ jd, mjd } |
$0.004 |
/v1/sunSunrise / sunset Compute sunrise, sunset, solar noon and day length for a latitude/longitude (east-positive) and date, using the NOAA sunrise equation. All times are UTC ISO-8601. Locations in polar day or night return null rise/set with a `polar` flag, a successful result, not an error. Inputslat*numberlon*numberyear*integermonth*integerday*integer
Returns
{ sunrise, sunset, solarNoon, dayLengthHours, polar } |
$0.004 |
/v1/moon-phaseMoon phase Compute the Moon's phase name, age in days since the last new moon and illuminated fraction (0..1) for a UTC date/time. Uses the mean synodic month (29.53 days). Inputsyear*integermonth*integerday*integerhourintegerminuteinteger
Returns
{ phase, ageDays, illumination } |
$0.004 |
/v1/seasonAstronomical season Determine the astronomical season for a date, based on the Sun's apparent ecliptic longitude (0°=March equinox, 90°=June solstice, …). Defaults to the northern hemisphere; pass `hemisphere` to flip. Inputsyear*integermonth*integerday*integerhemispherestring
Returns
{ season, hemisphere, solarLongitude } |
$0.004 |
chem
chem.openverbs.com
3 endpoints
| |
/v1/elementElement lookup Look up a periodic-table element by exactly one of `symbol` (e.g. "Fe"), `name` (e.g. "iron") or atomic `number` (1..118). Returns its number, symbol, name, standard atomic weight and whether that weight is a true standard atomic weight. Inputssymbolstringnamestringnumberinteger
Returns
{ number, symbol, name, mass, standardWeight } |
$0.004 |
/v1/searchElement search Search the periodic table by name or symbol substring. Exact matches rank first, then prefix matches, then substring matches. Returns up to `limit` elements (default 20) plus the total match count. Inputsquery*stringlimitinteger
Returns
{ matches:[Element], count } |
$0.004 |
/v1/molar-massMolar mass Compute the molar mass (g/mol) of a chemical formula. Supports nested parentheses and brackets, element multipliers, and hydrate dot notation with coefficients (e.g. "Ca(OH)2", "CuSO4·5H2O", "K4[Fe(CN)6]"). Returns the total mass and the per-element composition with mass fraction percentages. Inputsformula*string
Returns
{ formula, molarMass, composition:[{symbol,count,mass,percent}] } |
$0.004 |
chemeq
chemeq.openverbs.com
3 endpoints
| |
/v1/balanceBalance a chemical equation Balance an equation such as "H2 + O2 -> H2O" into the smallest whole-number coefficients using exact rational linear algebra. Equations that cannot be balanced with positive coefficients are clean 400s. Inputsequation*string
Returns
{ balanced, reactants: [{ formula, coefficient }], products: [...] } |
$0.004 |
/v1/stoichiometryReaction stoichiometry Given a reaction and a known amount (moles or grams) of one species, compute the amount of a target species. The equation is balanced automatically. Inputsequation*stringgiven*objecttarget*stringtargetUnitstring
Returns
{ balanced, given: { species, moles, grams }, target: { species, moles, grams } } |
$0.004 |
/v1/limitingLimiting reagent & theoretical yield Given a reaction and the supplied amount of every reactant, identify the limiting reagent and compute leftover reactant and theoretical product yields. Inputsequation*stringamounts*array
Returns
{ balanced, limitingReagent, reactants: [{ species, moles, consumedMoles, leftoverMoles }], products: [{ species, moles, grams }] } |
$0.004 |
physics
physics.openverbs.com
3 endpoints
| |
/v1/constantConstant lookup Look up a physical constant by its key (e.g. "speed-of-light"), symbol (e.g. "c") or exact name. Returns the CODATA 2018 recommended value, unit, relative standard uncertainty (0 for values that are exact by SI definition) and category. Inputsquery*string
Returns
{ key, symbol, name, value, unit, uncertainty, exact, category } |
$0.004 |
/v1/searchConstant search Search the constants table by key, symbol or name substring. Exact matches rank first, then prefix matches, then substring matches. Returns up to `limit` constants (default 20) plus the total match count. Inputsquery*stringlimitinteger
Returns
{ matches:[Constant], count } |
$0.004 |
/v1/listConstant list List every physical constant in the dataset, or only those in a given category (universal, adopted, electromagnetic, atomic, physico-chemical). Returns the constants, the total count and the set of available categories. Inputscategorystring
Returns
{ constants:[Constant], count, categories } |
$0.004 |
text
dictionary
dictionary.openverbs.com
3 endpoints
| |
|---|---|
/v1/defineDefine a word (dictionary definitions) Look up the definitions of an English word. Returns one entry per sense with its part of speech, definition, example sentences and synonyms. Optionally filter by part of speech. An unknown word returns found:false with a 200. Inputsword*stringposstring
Returns
{ word, found, entries: [{ partOfSpeech, definition, examples, synonyms }] } |
$0.002 |
/v1/synonymsSynonyms of a word (thesaurus) Return the synonyms of an English word, aggregated across all its senses. Optionally filter by part of speech. An unknown word returns found:false with a 200. Inputsword*stringposstring
Returns
{ word, found, count, synonyms: [] } |
$0.002 |
/v1/antonymsAntonyms of a word (opposites) Return the antonyms (opposites) of an English word, aggregated across all its senses. Optionally filter by part of speech. An unknown word returns found:false with a 200. Inputsword*stringposstring
Returns
{ word, found, count, antonyms: [] } |
$0.002 |
encoding
encoding.openverbs.com
4 endpoints
| |
/v1/detectDetect character set Guess the character set of a base64-encoded byte buffer: sniffs a byte-order mark, then falls back to ASCII / UTF-8 validation and a UTF-16 NUL-pattern heuristic. Returns a best-effort charset with a confidence label, a low-confidence guess is still a successful 200. Inputsbytes*string
Returns
{ charset, hasBom, bom, confidence, byteLength } |
$0.002 |
/v1/transcodeTranscode between character sets Decode a base64 byte buffer from one character set and re-encode it into another (utf-8, utf-16le, utf-16be, latin1, ascii). Characters that the target set cannot represent, or bytes invalid for the source set, are clean 400s. Inputsbytes*stringfrom*stringto*string
Returns
{ bytes, from, to, byteLength, text } |
$0.002 |
/v1/normalizeUnicode normalisation Apply a Unicode normalisation form (NFC, NFD, NFKC or NFKD) to a string. Reports whether the text changed and its length in UTF-16 code units and code points. Inputstext*stringformstring
Returns
{ text, form, changed, length, codePoints } |
$0.002 |
/v1/inspectInspect code points Break a string into its Unicode code points, each with its U+ notation, decimal value and UTF-8 / UTF-16 byte layout, plus total byte lengths. Inputstext*string
Returns
{ characters: [{ char, codePoint, decimal, utf8, utf16 }], codePoints, utf8Bytes, utf16Bytes } |
$0.002 |
nato
nato.openverbs.com
4 endpoints
| |
/v1/spellSpell with the phonetic alphabet Spell text using the NATO/ICAO phonetic alphabet (A→Alfa, B→Bravo, …), including digits and spaces (→Space). Characters with no phonetic spelling are clean 400s. Inputstext*string
Returns
{ words, text } |
$0.002 |
/v1/unspellDecode phonetic words Turn a string of phonetic words back into text ("Sierra Oscar Sierra" → "SOS"). Accepts common alternative spellings (Alpha, Juliet, Niner). Unknown words are clean 400s. Inputswords*string
Returns
{ text } |
$0.002 |
/v1/to-morseEncode Morse code Encode text into international (ITU) Morse code. Letters are separated by spaces and words by "/". Supports A-Z, 0-9 and common punctuation; unsupported characters are clean 400s. Inputstext*string
Returns
{ morse } |
$0.002 |
/v1/from-morseDecode Morse code Decode international Morse code back into text. Letters are separated by whitespace and words by "/". Unknown Morse sequences are clean 400s. Inputsmorse*string
Returns
{ text } |
$0.002 |
readability
readability.openverbs.com
4 endpoints
| |
/v1/scoreReadability scores Compute the standard English readability formulas, Flesch Reading Ease, Flesch, Kincaid grade, Gunning fog, SMOG, Coleman, Liau and ARI, along with the underlying sentence/word/syllable statistics. Empty text is a clean 400. Inputstext*string
Returns
{ stats: { sentences, words, syllables, characters, complexWords, … }, scores: { fleschReadingEase, fleschKincaidGrade, gunningFog, smog, colemanLiau, automatedReadabilityIndex } } |
$0.002 |
/v1/gradeConsensus grade level Summarise a text's difficulty as a single consensus US grade level (averaging the five grade formulas), plus the Flesch Reading Ease, a plain-language difficulty band and an approximate age range. Inputstext*string
Returns
{ gradeLevel, readingEase, difficulty, ageRange, contributingGrades } |
$0.002 |
/v1/syllablesCount syllables Count syllables per word and in total across the text. Inputstext*string
Returns
{ words: [{ word, syllables }], total, wordCount } |
$0.002 |
/v1/reading-timeReading & speaking time Estimate reading and speaking time for a text at configurable words-per-minute rates (defaults: 200 wpm reading, 130 wpm speaking). Inputstext*stringreadingWpmnumberspeakingWpmnumber
Returns
{ words, reading: { wpm, minutes, seconds, humanReadable }, speaking: { … } } |
$0.002 |
regex
regex.openverbs.com
4 endpoints
| |
/v1/testTest for a match Test whether a RE2 pattern matches anywhere in the input. Returns { matched }. RE2 guarantees linear-time evaluation, so this is safe against catastrophic backtracking. An invalid pattern is a clean 400; no match is a successful 200. Inputspattern*stringinput*stringflagsstring
Returns
{ matched } |
$0.004 |
/v1/matchFind matches and capture groups Find the first match (or all matches with all=true) of a RE2 pattern, returning each match's text, start/end offsets, and numbered and named capture groups. No match is a successful 200 with an empty match list. Inputspattern*stringinput*stringflagsstringallboolean
Returns
{ matched, count, matches:[{ match, start, end, groups }] } |
$0.004 |
/v1/replaceReplace matches Replace matches of a RE2 pattern with a replacement string. Replaces all matches by default (set all=false for first-only). The replacement may reference capture groups with $1, $2 or ${name}. Returns the resulting string. Inputspattern*stringinput*stringreplacement*stringflagsstringallboolean
Returns
{ result } |
$0.004 |
/v1/splitSplit by a pattern Split the input into parts on each match of a RE2 pattern. An optional limit caps the number of parts (0 = unlimited). Returns the parts array and its count. Inputspattern*stringinput*stringflagsstringlimitinteger
Returns
{ parts, count } |
$0.004 |
similarity
similarity.openverbs.com
10 endpoints
| |
/v1/levenshteinLevenshtein distance Levenshtein edit distance (insertions, deletions, substitutions) between two strings, plus a normalized similarity in [0,1]. Operates on Unicode code points. Inputsa*stringb*string
Returns
{ distance, similarity } |
$0.004 |
/v1/damerauDamerau-Levenshtein distance Damerau-Levenshtein distance, like Levenshtein but also counts adjacent transpositions as a single edit, plus a normalized similarity in [0,1]. Inputsa*stringb*string
Returns
{ distance, similarity } |
$0.004 |
/v1/hammingHamming distance Hamming distance, the number of positions at which two EQUAL-LENGTH strings differ, plus a normalized similarity. Strings of unequal length are a clean 400. Inputsa*stringb*string
Returns
{ distance, similarity } |
$0.004 |
/v1/jaroJaro & Jaro-Winkler similarity Jaro similarity and the Jaro-Winkler variant (which boosts scores for a shared prefix), both in [0,1]. The prefix boost factor is configurable (default 0.1, max 0.25). Well suited to short strings like names. Inputsa*stringb*stringprefixScalenumber
Returns
{ jaro, jaroWinkler } |
$0.004 |
/v1/diceSørensen-Dice coefficient Sørensen-Dice similarity coefficient in [0,1] over character bigrams, robust to word order and minor edits. Inputsa*stringb*string
Returns
{ coefficient } |
$0.004 |
/v1/jaccardJaccard index Jaccard similarity index in [0,1], the size of the intersection over the union of the two strings' character-bigram sets. Inputsa*stringb*string
Returns
{ coefficient } |
$0.004 |
/v1/soundexSoundex Encode a word with the classic Soundex algorithm (letter + 3 digits) for phonetic matching of names. Inputsword*string
Returns
{ word, code } |
$0.002 |
/v1/metaphoneMetaphone Encode a word with the Metaphone algorithm, more accurate than Soundex for English pronunciation. Inputsword*string
Returns
{ word, code } |
$0.002 |
/v1/double-metaphoneDouble Metaphone Encode a word with Double Metaphone, returning a primary and a secondary code to capture alternate pronunciations (useful for non-English names). Inputsword*string
Returns
{ word, primary, secondary } |
$0.002 |
/v1/comparePhonetic compare Report whether two tokens sound alike under a chosen algorithm (soundex, metaphone or double-metaphone; default double-metaphone). Returns each token's codes and a boolean match. Inputsa*stringb*stringalgorithmstring
Returns
{ a, b, algorithm, codesA, codesB, match } |
$0.002 |
unicode
unicode.openverbs.com
4 endpoints
| |
/v1/inspectInspect a code point Resolve a single code point (given as 'char' or 'codepoint') to its name, general category, block, script and plane. Provide exactly one of the two inputs. Inputscodepointobjectcharstring
Returns
{ codepoint, codepointDecimal, char, name, assigned, category: { code, name }, block, script, plane } |
$0.002 |
/v1/nameLook up character by name Reverse lookup: resolve a Unicode character name (e.g. 'SNOWMAN', 'CJK UNIFIED IDEOGRAPH-4E2D', 'HANGUL SYLLABLE GA') to its code point. Loose whitespace/case matching. An unknown name is a successful `found:false`. Inputsname*string
Returns
{ query, found, codepoint, codepointDecimal, char, name } |
$0.002 |
/v1/blockLook up a Unicode block Resolve a Unicode block name (loose matching) to its range, size, count of assigned characters and a small sample. An unknown block is a successful `found:false`. This is a Unicode Character Database block, not a blockchain block. Inputsblock*string
Returns
{ query, found, name, start, end, size, assignedCount, sample } |
$0.002 |
/v1/scriptLook up a Unicode script Resolve a Unicode script name (loose matching) to its code point ranges, total size and a small sample. An unknown script is a successful `found:false`. Inputsscript*string
Returns
{ query, found, name, ranges, size, sample } |
$0.002 |
trust-safety
mcpscan
mcpscan.openverbs.com
1 endpoint
| |
|---|---|
/v1/scanScan MCP manifest for risks Statically analyse a Model Context Protocol (MCP) server manifest for security risks. Tool descriptions enter the model context, a prime prompt-injection vector. Deterministic and offline (inline manifest). Flags dangerous capabilities (command/code execution, filesystem, credential and network access), injection patterns, hidden unicode and unconstrained parameters. Returns severity-ranked findings and a 0-100 score. Inputsmanifest*object
Returns
{ toolCount, hasFindings, findingCount, counts: { critical?, high?, medium?, low? }, riskScore (0-100), verdict (low|medium|high), findings: [{ location, rule, severity, message, excerpt }] } |
$0.004 |
preflight
preflight.openverbs.com
1 endpoint
| |
/v1/inspectInspect x402 endpoint Fetch any URL and, without paying, decode its x402 402 Payment Required challenge: price (atomic and formatted for known stablecoins), asset, network, payTo, resource, description, timeout and any input schema. Flags MPP and Bazaar discovery extensions. Returns free:true when no payment is needed. SSRF-hardened: public hosts only; private, loopback, link-local and cloud-metadata addresses are rejected. Inputsurl*string
Returns
{ url, finalUrl, status, isX402, paymentRequired, free, x402Version, error, acceptsCount, accepts: [{ scheme, network, asset, assetSymbol, payTo, resource, description, mimeType, maxAmountRequired, amountFormatted, maxTimeoutSeconds, hasInputSchema }], mppEnabled, bazaarDeclared, contentType } |
$0.006 |
scan
scan.openverbs.com
4 endpoints
| |
/v1/secretsScan text for leaked secrets Scan source code or configuration text for hardcoded secrets: AWS access keys, GitHub/Slack/Google tokens, Stripe and OpenAI keys, PEM private-key blocks, JWTs and high-entropy secret assignments. Placeholder values are filtered out. Each finding gives the rule, a severity (critical/high/medium/low), line and column, entropy and a masked excerpt. Offline and deterministic. Inputscontent*string
Returns
{ hasSecrets, count, counts: { <severity>: n }, findings: [{ rule, name, severity, line, column, match, entropy }] } |
$0.004 |
/v1/detectDetect PII Find personally identifiable information in a text blob: emails, phone numbers, credit cards (Luhn-validated), IBANs (mod-97 validated), IPv4/IPv6 addresses, US SSNs and JWTs. Returns every match with its type and character offsets, plus per-type counts. Validated, not just pattern-matched, to keep false positives low. Fully offline. Inputstext*stringtypesarray
Returns
{ hasPII, count, counts: { <type>: n }, matches: [{ type, value, start, end }] } |
$0.004 |
/v1/redactRedact PII Return the input text with every detected PII span replaced. `mode` controls the replacement: "label" (default) → `[EMAIL]`; "mask" → the value covered with a mask character; "hash" → `[EMAIL:1a2b3c4d]`, a stable per-value fingerprint so equal values stay linkable without exposing them. Same validated detectors as `/detect`. Fully offline. Inputstext*stringtypesarraymodestringmaskstring
Returns
{ redacted, count, counts: { <type>: n }, matches: [{ type, value, start, end }] } |
$0.004 |
/v1/kevCISA known exploited vulnerabilities check Check up to 50 CVE IDs against CISA's Known Exploited Vulnerabilities (KEV) catalog. Returns membership, vendor/product, exploitation evidence, ransomware-use status and remediation guidance from CC0 data. Not listed does not mean safe or unexploited. Federal due dates are not global deadlines. Refreshed hourly; stale snapshots are explicitly flagged. Inputscves*array
Returns
{ source, catalogVersion, asOf, catalogSize, checkedAt, results:[{cve,listed,vendor,product,name,description,dateAdded,requiredAction,federalDueDate,ransomwareUse,cwes,reference}], stale, cachedAt? }. Membership only, not a safety or CVE-existence verdict |
$0.006 |
urltrust
urltrust.openverbs.com
3 endpoints
| |
/v1/analyzeAnalyze URL trust Score how likely a URL is to be phishing or untrustworthy using offline lexical and structural heuristics (no network lookups). Checks raw-IP hosts, embedded credentials, punycode/homoglyph labels, brand typosquatting, brand-in-subdomain, abused TLDs, shorteners, random hostnames, odd ports, plaintext http and executable paths. Returns a 0-100 risk score, a verdict and the reasons. Inputsurl*string
Returns
{ url, host, scheme, score (0-100), verdict: low|medium|high, reasons: [{ code, message, weight }] } |
$0.004 |
/v1/domainScore a domain's reputation Assess how trustworthy a domain is using authoritative live signals, not just its spelling. Fuses RDAP registration data (domain age, the single strongest phishing signal, plus registrar, expiry and registry status flags), DNS resolvability (A/AAAA), MX presence and DNSSEC into a 0-100 risk score with a verdict (low/medium/high) and the exact reasons. Pairs with `urltrust` (lexical) for a complete picture. Inputsdomain*string
Returns
{ domain, registered, ageDays, createdAt, expiresAt, registrar, resolves, addresses, hasMx, mx, dnssec, status, score (0-100), verdict, reasons: [{ code, message, weight }] } |
$0.006 |
/v1/techstackWebsite technology stack lookup Detect the technology stack a website runs on. Given a domain, returns the software and services it uses (CDN, analytics, frameworks, CMS, payment, hosting, security) grouped by category, plus a domain rank, last-seen date, country and public social links. Unknown domain returns found=false. Inputsdomain*string
Returns
found, domain, categories, technologies (category -> tech names), a flat stack list, and (where present) domainRank, lastVisited, country, language, title, description, emails, phones, social |
$0.05 |
validation
checkdigit
checkdigit.openverbs.com
5 endpoints
| |
|---|---|
/v1/luhnLuhn check Validate a number by the Luhn (mod-10) algorithm, the scheme behind credit/debit card numbers and many IDs. Spaces and hyphens are ignored. A mismatched check digit is a successful { valid: false }. Inputsnumber*string
Returns
{ input, valid, checkDigit, expectedCheckDigit } |
$0.002 |
/v1/isbnISBN check Validate an ISBN-10 (mod-11, trailing X allowed) or ISBN-13 (GTIN mod-10) book number. Length after removing spaces/hyphens selects the scheme. Inputsisbn*string
Returns
{ input, kind, valid, checkDigit, expectedCheckDigit } |
$0.002 |
/v1/eanEAN / UPC / GTIN check Validate a GTIN barcode number, EAN-8, UPC-A (12), EAN-13 or GTIN-14, by the standard mod-10 check digit. Length selects the scheme. Inputsnumber*string
Returns
{ input, length, valid, checkDigit, expectedCheckDigit } |
$0.002 |
/v1/imeiIMEI check Validate a 15-digit mobile device IMEI by its Luhn check digit. Spaces and hyphens are ignored. Inputsimei*string
Returns
{ input, valid, checkDigit, expectedCheckDigit } |
$0.002 |
/v1/routingABA routing check Validate a 9-digit US ABA bank routing number by its weighted (3,7,1) mod-10 checksum. Spaces and hyphens are ignored. InputsroutingNumber*string
Returns
{ input, valid, checkDigit, expectedCheckDigit } |
$0.002 |
creditcard
creditcard.openverbs.com
5 endpoints
| |
/v1/validateValidate a card number Validate a payment-card number: Luhn check-digit test plus network detection and length check. A syntactically valid number that fails Luhn returns `valid:false` (a 200, not an error). Inputsnumber*string
Returns
{ valid, luhnValid, lengthValid, network, digits } |
$0.002 |
/v1/networkDetect the card network Detect the issuing network/brand (Visa, Mastercard, American Express, Discover, Diners Club, JCB, UnionPay, Maestro) from the card's IIN prefix, with the network's valid lengths. Returns `network:null` for an unrecognized prefix. Inputsnumber*string
Returns
{ network, lengths } |
$0.002 |
/v1/maskMask a card number Mask a card number for display, keeping the first six and last four digits (the PCI-permitted maximum) and replacing the rest with a mask character (default `*`). Inputsnumber*stringmaskCharstring
Returns
{ masked } |
$0.002 |
/v1/formatGroup a card number Format a card number into the conventional display groups for its network (4-6-5 for Amex, 4-6-4 for 14-digit Diners, otherwise groups of four). Inputsnumber*string
Returns
{ formatted, network } |
$0.002 |
/v1/generateGenerate a TEST card number Generate a random Luhn-valid TEST card number for the given network (default Visa). For testing only, these are not issued cards and cannot be charged. The response is always flagged `test:true`. Inputsnetworkstringlengthinteger
Returns
{ number, network, test } |
$0.002 |
iban
iban.openverbs.com
2 endpoints
| |
/v1/validateValidate IBAN Validate an IBAN (mod-97 checksum, length, country format) and decompose it into country, bank, branch and account parts. Inputsiban*string
Returns
Whether the IBAN is valid, its compact and formatted forms, countryCode, bankIdentifier, branchIdentifier, accountNumber, and reasons[] (error codes) when invalid |
$0.004 |
/v1/bicValidate BIC Validate a BIC/SWIFT code and decompose it into bank, country, location and branch codes. Inputsbic*string
Returns
Whether the BIC is valid, its bankCode, countryCode, locationCode, branchCode, whether it is a testBic, and reasons[] when invalid |
$0.004 |
postal
postal.openverbs.com
4 endpoints
| |
/v1/validateValidate a postal code Check whether a postal / ZIP code is well-formed for a country (ISO 3166-1 alpha-2). A malformed code is a successful result with `valid:false`, not an error, only an unsupported country or empty code is a 400. Inputscountry*stringcode*string
Returns
{ country, code, valid } |
$0.002 |
/v1/formatNormalise a postal code Normalise a postal code's casing and whitespace (uppercase, collapse runs of spaces) and report whether the normalised form is valid for the country. Inputscountry*stringcode*string
Returns
{ country, input, normalized, valid } |
$0.002 |
/v1/specCountry postal-code pattern Return the validation regular expression (source and flags) used for a country's postal codes. Inputscountry*string
Returns
{ country, pattern, flags } |
$0.002 |
/v1/countriesList supported countries List every ISO 3166-1 alpha-2 country code for which a postal-code pattern is available. InputsJSON body
Returns
{ countries, count } |
$0.002 |
vat
vat.openverbs.com
6 endpoints
| |
/v1/norwayValidate Norwegian VAT number Validate a Norwegian VAT (MVA) number against the official business register. Validity means the entity exists and is entered in the VAT register. InputsvatNumber*string
Returns
Whether the number is valid, the countryCode/vatNumber, the registered name/address (when the register discloses them), the requestDate, the source register, an attribution string when the source's licence requires it, and serviceAvailable (false during register downtime, in which case valid is false) |
$0.006 |
/v1/finlandValidate Finnish VAT number Validate a Finnish VAT (ALV) number against the official VAT register. Validity means the entity exists and holds a live registration. InputsvatNumber*string
Returns
Whether the number is valid, the countryCode/vatNumber, the registered name/address (when the register discloses them), the requestDate, the source register, an attribution string when the source's licence requires it, and serviceAvailable (false during register downtime, in which case valid is false) |
$0.006 |
/v1/franceValidate French VAT number Validate a French VAT (TVA) number against the official company register. Validity means the SIREN exists and the company is administratively active. InputsvatNumber*string
Returns
Whether the number is valid, the countryCode/vatNumber, the registered name/address (when the register discloses them), the requestDate, the source register, an attribution string when the source's licence requires it, and serviceAvailable (false during register downtime, in which case valid is false) |
$0.006 |
/v1/czechiaValidate Czech VAT number Validate a Czech VAT (DIČ) number for a legal entity against the official register. Validity means the subject exists and is live in the VAT (DPH) register. InputsvatNumber*string
Returns
Whether the number is valid, the countryCode/vatNumber, the registered name/address (when the register discloses them), the requestDate, the source register, an attribution string when the source's licence requires it, and serviceAvailable (false during register downtime, in which case valid is false) |
$0.006 |
/v1/polandValidate Polish VAT number Validate a Polish VAT (NIP) number against the official VAT register. Validity means the taxpayer's VAT status is active (Czynny). InputsvatNumber*string
Returns
Whether the number is valid, the countryCode/vatNumber, the registered name/address (when the register discloses them), the requestDate, the source register, an attribution string when the source's licence requires it, and serviceAvailable (false during register downtime, in which case valid is false) |
$0.006 |
/v1/latviaValidate Latvian VAT number Validate a Latvian VAT (PVN) number against the official VAT-payers register. Validity means the number has a currently active entry in the register. InputsvatNumber*string
Returns
Whether the number is valid, the countryCode/vatNumber, the registered name/address (when the register discloses them), the requestDate, the source register, an attribution string when the source's licence requires it, and serviceAvailable (false during register downtime, in which case valid is false) |
$0.006 |
web
places
places.openverbs.com
3 endpoints
| |
|---|---|
/v1/place-detailsGoogle Business Profile / place details lookup Look up a business's full Google Business Profile by name and location. Returns name, category, star rating and review count, address, phone, website, opening hours by day, Google place_id and CID, coordinates and claimed status. For place enrichment, store-hours and business lookups. Unknown business returns found=false. Inputsname*stringlocationstringlanguagestring
Returns
found plus the profile: name, category, categories, rating, reviewsCount, address, phone, website, domain, placeId, cid, latitude, longitude, claimed, bookingUrl and hours (day → [{open,close}] in HH:MM). No match → found:false |
$0.02 |
/v1/business-searchLocal business directory search Google Business Profile and Google Maps local business search API: find businesses within a radius of a coordinate, filtered by category and/or name. Returns ranked businesses with name, category, star rating and review count, address, phone, website domain, place_id/CID and coordinates. For local SEO, lead lists and competitor research. No match → empty results. InputscategoriesarrayquerystringlocationCoordinate*stringlimitinteger
Returns
total, count and ranked results, each with rank, name and (where present) category, categories, rating, reviewsCount, address, phone, domain, website, placeId, cid, latitude, longitude, claimed. No match → empty results |
$0.03 |
/v1/business-categoriesLocal business category counts Count how many Google businesses fall under each category within a radius of a coordinate, optionally filtered by category or name. Returns categories ranked by business count - for local market sizing, competitor-density analysis and site-selection research. No match → empty results. InputslocationCoordinate*stringcategoriesarrayquerystringlimitinteger
Returns
total, count and results, each with category and count (number of businesses in that category). No match → empty results |
$0.04 |
search
search.openverbs.com
10 endpoints
| |
/v1/webWeb Search (Google SERP) Web search API - live Google (default) or Bing SERP for a query: search engine results returned as ranked organic hits with title, URL, domain and snippet, localised by location and language. A google search api / serp api for agents: search the web, live web search for grounding, RAG and web lookup. Inputsq*stringlocationstringlanguagestringlimitintegerenginestring
Returns
The organic total and ranked results, each with rank, title, url, domain and (where present) description and breadcrumb. No results → empty results |
$0.01 |
/v1/bingBing Search (Bing SERP) Bing search API - live Bing SERP for a query: Bing search engine results returned as ranked organic hits with title, URL, domain and snippet, localised by location and language. A bing serp api for agents: search Bing, live Bing web search for grounding, RAG and cross-engine lookup beyond Google. Inputsq*stringlocationstringlanguagestringlimitinteger
Returns
The organic total and ranked results, each with rank, title, url, domain and (where present) description and breadcrumb. No results → empty results |
$0.01 |
/v1/newsNews search News search: live Google News results for a query, localised by location and language. Returns ranked articles with title, URL, domain and, where available, source and timestamp. Real-time news API for current events and headlines. Inputsq*stringlocationstringlanguagestringlimitinteger
Returns
The article total and ranked results, each with rank, title, url, domain and (where present) source and timestamp. No results → empty results |
$0.01 |
/v1/jobsJobs search (Google Jobs) Jobs search: Google Jobs listings for a query (e.g. "backend engineer"), localised by location and language. Returns ranked postings with title, employer, location and, where available, salary, contract type, source and posting date. Results are collected on demand, so the call may take a few seconds. Inputsq*stringlocationstringlanguagestringlimitinteger
Returns
The posting total and ranked results, each with rank, title and (where present) employer, location, salary, contractType, source, sourceUrl, posted and jobId. No results → empty results |
$0.01 |
/v1/youtubeYouTube video search Live YouTube video-search results for a query, localised by location and language. Returns ranked videos with title, URL, video id, channel, view count, publish date and duration. Inputsq*stringlocationstringlanguagestringlimitinteger
Returns
The total and ranked results, each with rank, title, url, videoId and (where present) channel, channelUrl, views, published, durationSeconds, isLive, isShorts. No results → empty results |
$0.01 |
/v1/localLocal business & places search Live Google local-finder (map places) results for a query, localised by location and language. Returns ranked places with title, address, website domain, phone, rating and review count. Inputsq*stringlocationstringlanguagestringlimitinteger
Returns
The total and ranked results, each with rank, title and (where present) description, domain, url, phone, rating, reviews, cid. No results → empty results |
$0.01 |
/v1/imagesGoogle Image Search Image search API - live Google Images results for a query, localised by location and language. Returns ranked images with title, direct image URL, source page URL and alt text. A google images / image search api for agents. Inputsq*stringlocationstringlanguagestringlimitinteger
Returns
The total and ranked results, each with rank, title, imageUrl and (where present) sourceUrl and alt. No results → empty results |
$0.006 |
/v1/scholarScholarly & Academic Paper Search Scholarly search API - academic papers and research articles for a query, powered by OpenAlex. Returns ranked works with title, authors, year, venue, DOI, citation count and open-access status. A google-scholar-style research / scholarly articles search for agents. Data source: OpenAlex (CC0). Inputsq*stringlimitinteger
Returns
The total matches and ranked results, each with rank, title, authors, citations, openAccess and (where present) year, venue, doi, url, type. No results → empty results. Data source: OpenAlex |
$0.006 |
/v1/wikipediaWikipedia Article Summary Wikipedia summary API - the plain-language summary of the best-matching Wikipedia article for a topic or query, in any language. Returns the article title, short description, summary extract, thumbnail image and canonical URL. A wikipedia / encyclopedia lookup for agents grounding answers on a topic. No match returns found:false. Data source: Wikipedia (CC BY-SA 4.0). Inputsq*stringlangstring
Returns
found and lang plus, when matched, title, description, extract, url and (where present) thumbnail, type. Every response carries attribution (CC BY-SA 4.0). No match → found: false. Data source: Wikipedia |
$0.002 |
/v1/suggestSearch autocomplete suggestions Live Google autocomplete suggestions for a partial query, localised by location and language. Returns ranked suggestion strings with a relevance score. Inputsq*stringlocationstringlanguagestringlimitinteger
Returns
The total and ranked suggestions, each with rank, suggestion and (where present) relevance. No results → empty suggestions |
$0.01 |
sentiment
sentiment.openverbs.com
1 endpoint
| |
/v1/sentimentMarket & Brand Sentiment Market & brand sentiment for any keyword, brand, ticker or product: analyses the sentiment of web & news content mentioning it and returns an overall label (positive/negative/neutral/mixed), a net sentiment score (-1..1), positive/negative/neutral shares and an emotion breakdown (anger, happiness, love, sadness, fun). Inputskeyword*string
Returns
label (positive/negative/neutral/mixed), netSentiment (-1..1), totalMentions, polarity and polarityShare (positive/negative/neutral) and emotions (anger/happiness/love/sadness/fun). found:false when there is no coverage for the keyword |
$0.04 |
url
url.openverbs.com
4 endpoints
| |
/v1/parseParse URL Parse an absolute URL into its WHATWG components: protocol/scheme, credentials, host/hostname/port, origin, pathname (plus path segments), search (plus a decoded query object) and hash. A string that is not a valid absolute URL is rejected as a clean 400. Inputsurl*string
Returns
{ href, protocol, scheme, host, hostname, port, origin, pathname, segments, search, query, hash, … } |
$0.002 |
/v1/normalizeNormalize URL Canonicalize a URL: WHATWG parsing already lowercases the host, resolves dot-segments and drops default ports; on top of that, query parameters are sorted by default and you can optionally drop the fragment or a trailing slash. Returns the normalized URL and whether it changed. Inputsurl*stringsortQuerybooleanremoveHashbooleanremoveTrailingSlashbooleanlowercaseHostnameboolean
Returns
{ url, changed } |
$0.002 |
/v1/resolveResolve reference Resolve a relative or absolute reference against a base URL, following RFC 3986 reference resolution (e.g. base 'https://a.com/x/y' + ref '../z' → 'https://a.com/z'). The base must itself be a valid absolute URL, else a clean 400. Inputsbase*stringref*string
Returns
{ url } |
$0.002 |
/v1/queryQuery string parse / build Two directions over query strings. action='parse' decodes a query string (with or without a leading '?') into an object, collapsing repeated keys into arrays. action='build' encodes a params object into a query string, expanding array values into repeated keys; set sort=true to order keys alphabetically. Inputsaction*stringquerystringparamsobjectsortboolean
Returns
{ query } (parse) or { string } (build) |
$0.002 |
useragent
useragent.openverbs.com
3 endpoints
| |
/v1/parseParse a User-Agent Break a User-Agent string into browser, engine, operating system (each with a version) and device type. Unidentifiable components are reported as null. Inputsua*string
Returns
{ ua, browser: { name, version }, engine: { … }, os: { … }, device: { type } } |
$0.002 |
/v1/classifyClassify a User-Agent Classify a User-Agent by device form factor and return convenience booleans (isBot, isMobile, isTablet, isDesktop, isTouchCapable) for routing decisions. Inputsua*string
Returns
{ ua, deviceType, isBot, isMobile, isTablet, isDesktop, isTouchCapable } |
$0.002 |
/v1/is-botDetect a bot Detect whether a User-Agent belongs to a known bot, crawler, AI agent or HTTP tool, and if so return its name and category (search, social, seo, ai, monitoring, tool, …). Inputsua*string
Returns
{ ua, isBot, name, category } |
$0.002 |
No operations match your filters.