Selling on the Data Marketplace
Sell a data product on AlterLab: describe it as a manifest, test it on live fetches, publish it for review and get paid per valid result. Buyers see only your listing, its price and its measured reliability.
Become a Seller
Selling needs an AlterLab account and an API key with the listings:write scope. The fastest route is the seller prompt on /store/sell: paste it into your agent and approve the key request in your browser. Paid listings also need Stripe Connect identity verification, which you complete yourself in the browser. Free listings are not blocked by it. One verified person per seller account.
Create a Draft
A listing is a manifest: slug, version, title, summary, category, data_class, login_required, input_schema, output_schema, steps, pricing, test_inputs and owner. Steps run in order: fetch, parse, filter, dedupe, transform (sandboxed JavaScript or Python with no network access) and map_entity. Create the draft from the dashboard or with the alterlab_listing_draft_create MCP tool. An invalid manifest returns 422 with the field errors, and a draft is private to you.
Test the Draft
alterlab_listing_draft_test runs every test_inputs entry on live fetches and scores each one. You pay the base fetch cost only, with no seller markup, so testing costs what a buyer's run would cost without your margin. The result lists per-input passed and a reason, valid_records and completeness, plus the manifest_hash it applies to. Editing the draft invalidates the result, so test again after any change.
Publish and Review
alterlab_listing_publish publishes the draft as a new immutable version in pending_review. It is refused with 422 test_inputs_not_passing and the per-input reasons unless the last test ran on this exact manifest and every test_inputs entry passed. A manifest that breaks the Acceptable Use Policy is refused with reason codes. A paid listing also needs verified Stripe Connect and returns 409 connect_not_ready until it is.
A listing moves through these states:
draft: yours alone, not visible in the store.pending_review: submitted and waiting for review.published: live in the catalog and runnable.degraded: live, but health checks are failing; buyers are warned.rejected: review declined it, with a reason code.suspendedanddelisted: removed by moderation for a policy reason.
Payouts
Earnings come from the markup you set in pricing.markup_microcents_per_result, on top of the base fetch cost, and only on valid results. Payouts go through Stripe Connect: start onboarding from the seller flow, finish identity verification on Stripe, and check your status with GET /api/v1/creator/connect/status (can_publish_paid turns true once verified). Earnings are in the dashboard at /dashboard/creator/earnings. Revenue share, payout schedule and eligibility are set out in the Creator Agreement.
Rules
Listings must follow the marketplace guidelines and the Acceptable Use Policy. Listings can be reported by buyers, and a seller can answer with a counter-notice.
MCP Tools
alterlab_listing_draft_create: validate a manifest and save it as a draft.alterlab_listing_draft_test: run every test input on live fetches.alterlab_listing_publish: publish a tested draft for review.
All three need the listings:write scope. Buying and feeds are covered in the Data Marketplace guide.