Easily access multi-domain data through natural language — one query, auto-aggregated, ready to use.
Without DataHub ❌With DataHub ✅Build and maintain your own scraping infrastructure; deal with anti-bot, IP blocking, rate limiting, CAPTCHAs, and page structure changesOne natural-language query replaces the entire crawling pipelineLearn, integrate, and manage auth for dozens of disparate APIs — each with its own docs, pagination, rate limits, and response formatsUnified interface across all domains; no per-platform API knowledge requiredHit dead ends when target data is unavailable — no fallback, no alternativesBuilt-in data bounty system: request unavailable data and the community fulfills it
DataHub provides access to multi-domain data, eliminating the hassle of integrating with each platform's API individually:
DomainCategories of Available DataE-commerceProduct listings, pricing, reviews, sales trends, category rankingsLocal ServicesBusiness listings, service providers, ratings, operating hours, location dataRecruitmentJob listings, candidate profiles, salary data, hiring trends, company informationSocial MediaUser profiles, posts, engagement metrics, trending topics, influencer dataShort VideoVideo metadata, trending content, creator analytics, engagement statisticsFinanceStock data, company financials, market indicators, economic reports, crypto pricesNewsHeadlines, articles, sentiment analysis, topic clustering, source aggregationWeb3On-chain data, token metrics, NFT collections, DeFi protocols, wallet activityGamingGame statistics, player data, esports results, in-game economies, release schedulesSportsMatch results, player statistics, league standings, betting odds, schedulesMarketingCampaign analytics, ad performance, market research, competitor intelligenceEducationCourse listings, institution data, academic research, learning resources, certificationsDomainExamples of Available DataE-commerceAmazon, eBay, Alibaba, Bestbuy, Shopee, Shopify, Taobao, Pinduoduo, ... (product listings, prices, reviews, sales trends, etc.)Local ServicesGoogle Maps, Yelp, Airbnb, Opentable, Baike (business listings, service providers, ratings, business hours, etc.)RecruitmentLinkedIn, Indeed, Upwork, Freelancer (job listings, candidate profiles, salary data, etc.)Social MediaTwitter, Facebook, Telegram, Snapchat, Wechat, Weibo (user profiles, posts, engagement metrics, trending topics, etc.)Short VideoTikTok, Douyin, Rednote, Xiaohongshu, Bilibili (video metadata, trending content, creator analytics, etc.)FinanceYahoo Finance, Bloomberg, CoinGecko (stock data, corporate financials, market indicators, cryptocurrency prices, etc.)NewsReuters, BBC, Google News, Sina News (news headlines, articles, sentiment analysis, topic clustering, etc.)Web3Etherscan, Dune Analytics, OpenSea (on-chain data, token metrics, NFT collections, DeFi protocols, etc.)GamingSteam, Twitch, Esports Platforms (game stats, player data, esports results, etc.)SportsESPN, Sofascore, Flashscore (match results, player statistics, league rankings, betting odds, etc.)MarketingGoogle Analytics, SEMrush, SimilarWeb (campaign analytics, ad performance, market research, etc.)EducationCoursera, Udemy, university websites (course listings, institutional information, academic research, learning resources, etc.)TravelTripAdvisor, Expedia, Booking.com (hotel listings, flight data, user reviews, destination insights, pricing trends, etc.)
💡 More domains available upon request. If you need data from a domain not listed above, ask or create a data bounty.
Pre-processed, cleaned, and organized data ready for analysis:
json
{
"summary": "Key insights extracted from raw data",
"structured_data": {
"field1": "value1",
"field2": "value2"
},
"trends": [...],
"recommendations": [...]
}
Original, unmodified JSON response from the underlying API:
json
{
"source": "original-api-name",
"timestamp": "2024-01-15T10:30:00Z",
"raw_response": { ... }
}
Human-readable report format for consumption and sharing:
text
# Data Report: Topic X
## Summary
Key findings and insights...
## Detailed Data
Structured presentation of results...
## Sources
List of data sources used...
All queries benefit from the following built-in capabilities:
CapabilityDescription_Filtering_Filter data by date range, category, location, value thresholds, and custom criteria_Validation_Automatic data quality checks, duplicate removal, format verification_Deduplication_Remove duplicate entries across multiple data sources_Transformation_Convert between formats, normalize values, currency/unit conversion_Enrichment_Cross-reference with other datasets to add context_Aggregation_Summarize, group, and calculate statistics across datasets
Users can specify filters directly in their query:
CapabilityDescriptionNatural Language QueriesConvert user's natural language into API calls with automatic parameter extractionAsync Result PollingAutomatically poll until data is readyAPI Supply AdditionAdd new API supplies using natural language + documentation linkData BountiesInitiate data bounties when requested data is unavailableMulti-Format OutputReturn structured data, raw JSON, or Markdown reportsData ProcessingBuilt-in filtering, validation, deduplication, and transformation
Before using this Skill, you need a DataHub API Key. Two ways to get one:
text
Please give me an API Key
or
text
I want to apply for an API key
💡 Tip: New users typically receive free credits sufficient for first-time use.
After obtaining your API Key, configure it using one of these methods:
bash
export DATAHUB_API_KEY="your-api-key-here"
Create ~/.datahub/config.json:
json
{
"apiKey": "your-api-key-here"
}
Create datahub.config.json in your project root:
json
{
"apiKey": "your-api-key-here"
}
Configuration priority: Environment Variable > User Config > Project Config
Use this when the user wants to fetch data from any supported domain — no scraping setup, no per-API integration work, just natural language.
Execute scripts/query.js to submit the user's natural language query:
bash
node scripts/query.js "<user's natural language query>" [sessionId]
Parameters:
Response Format:
json
{
"success": true,
"processId": "xxx-xxx-xxx",
"message": "Query submitted"
}
Execute scripts/poll.js to poll for the processed result:
bash
node scripts/poll.js <processId> [--max-attempts 60] [--interval 1000]
Parameters:
Response Format:
json
{
"success": true,
"data": { ... },
"attempts": 5,
"elapsed": 5234
}
Use this when the user wants to add a new API supply to the system — no need to write custom integration code or manage auth/pagination on their own.
Execute scripts/query.js with a specially formatted query that includes the API documentation link:
bash
node scripts/query.js "Add API supply: <description>. Documentation: <DocLink>" [sessionId]
bash
# E-commerce API
node scripts/query.js "Add API supply: Amazon product search and reviews API. Documentation: https://api.example.com/docs"
# Social Media API
node scripts/query.js "Add API supply: LinkedIn company page data API. Docs: https://linkedin-api.example.com"
# Web3 API
node scripts/query.js "Supply a DEX trading volume API for Uniswap and PancakeSwap: https://defi-api.example.com/docs"
Alternative Natural Language Formats:
Execute scripts/poll.js with the returned processId:
bash
node scripts/poll.js <processId>
Expected Response:
json
{
"success": true,
"data": {
"apiId": "new-api-xxx",
"domain": "e-commerce",
"status": "registered",
"message": "API supply successfully added and pending approval"
}
}
Inform the user that:
Use this when the user requests data that is not currently available — instead of hitting a dead end, create a bounty and let the community supply the data.
Execute scripts/query.js with a query describing the desired data and bounty details:
bash
node scripts/query.js "Create data bounty: <data description>. Reward: <bounty details>" [sessionId]
bash
# E-commerce data bounty
node scripts/query.js "Create data bounty: I need Amazon Best Seller rankings updated daily for the electronics category. Reward: $100"
# Recruitment data bounty
node scripts/query.js "Bounty: Looking for LinkedIn job posting data with salary info across tech companies. Will pay $200"
# Gaming data bounty
node scripts/query.js "I need real-time player statistics for Valorant competitive matches. Offering $150 bounty"
Alternative Natural Language Formats:
Execute scripts/poll.js with the returned processId:
bash
node scripts/poll.js <processId>
Expected Response:
json
{
"success": true,
"data": {
"bountyId": "bounty-xxx-xxx",
"status": "active",
"domain": "gaming",
"description": "Real-time player statistics for Valorant competitive matches",
"reward": "$150",
"createdAt": "2024-01-15T10:30:00Z",
"message": "Bounty created successfully"
}
}
Provide the user with:
User Input:
text
"Show me the top 10 best-selling electronics on Amazon with rating above 4 stars and price under $100"
Execution:
bash
RESULT=$(node scripts/query.js "Show me the top 10 best-selling electronics on Amazon with rating above 4 stars and price under $100")
PROCESS_ID=$(echo $RESULT | jq -r '.processId')
node scripts/poll.js $PROCESS_ID
User Input:
text
"Get software engineer job listings in New York posted this week with salary range above $120k"
Execution:
bash
RESULT=$(node scripts/query.js "Get software engineer job listings in New York posted this week with salary range above \$120k")
PROCESS_ID=$(echo $RESULT | jq -r '.processId')
node scripts/poll.js $PROCESS_ID
User Input:
text
"Fetch trending Twitter posts about AI from the past 24 hours with at least 1000 likes, filter out retweets"
Execution:
bash
RESULT=$(node scripts/query.js "Fetch trending Twitter posts about AI from the past 24 hours with at least 1000 likes, filter out retweets")
PROCESS_ID=$(echo $RESULT | jq -r '.processId')
node scripts/poll.js $PROCESS_ID
User Input:
text
"Get the top 10 DeFi protocols by TVL on Ethereum, with 7-day change percentage"
Execution:
bash
RESULT=$(node scripts/query.js "Get the top 10 DeFi protocols by TVL on Ethereum, with 7-day change percentage")
PROCESS_ID=$(echo $RESULT | jq -r '.processId')
node scripts/poll.js $PROCESS_ID
User Input:
text
"I need NBA player performance data with advanced metrics but can't find it. I'll offer $200 for anyone who can supply this."
Execution:
bash
RESULT=$(node scripts/query.js "Create data bounty: NBA player advanced performance metrics API with historical data. Reward: $200")
PROCESS_ID=$(echo $RESULT | jq -r '.processId')
node scripts/poll.js $PROCESS_ID
Error TypeHandling ApproachAPI Key not configuredGuide user to visit https://datahub.codes to obtain an API KeyInvalid/Expired API KeyPrompt user to refresh their API Key or verify it's correctQuery timeoutRetry up to 3 times with incremental backoffPolling timeoutInform user the task is taking longer; suggest checking back laterInvalid response formatAttempt to extract useful information; otherwise report format issueNetwork errorPrompt user to check network connectionInsufficient creditsDirect user to website to check balance and upgrade optionsAPI supply already existsInform user the API is already available and can be used immediatelyBounty creation failedExplain reason and suggest adjusting reward or descriptionData not found (bounty eligible)Proactively suggest creating a data bountyDomain not supportedSuggest creating a bounty or API supply to add the domainFilter too restrictiveSuggest broadening filter criteria and retry
The Skill should proactively suggest:
VariableDescriptionDefaultDATAHUB_API_KEYRequired, obtain from https://datahub.codesNoneDATAHUB_BASE_URLDataHub API base URLhttps://datahub.codesDATAHUB_TIMEOUTRequest timeout in milliseconds60000
processId for result retrieval; results typically return in 3–30 seconds (complex queries may take longer)sessionId to maintain context across multi-turn conversationsDocLink)