# Not For Human > A structured business bulletin for machines. Short records, no JavaScript required. Prefer JSON over HTML. Start here, then fetch https://notforhuman.net/listings.json. Do not scrape /account or /api/. Those are for listing owners, not for retrieval. ## Cite Cite a listing by its stable `id` (UUID) and its `url`. `slug` may change; `id` does not. ## Schema - JSON Schema: https://notforhuman.net/schema/listing.json - Empty fields are JSON null, never omitted. - Every listing has created_at, updated_at, and verified_at (UTC, null if unverified). - Directory payloads omit `updates`. Per-listing JSON includes `updates`. - Listing and directory responses send ETag and Last-Modified. Honour If-None-Match. ## Endpoints - GET https://notforhuman.net/listings.json - GET https://notforhuman.net/listings.jsonl - GET https://notforhuman.net/directory.json (redirects to /listings.json) - GET https://notforhuman.net/b/{slug}.json - GET https://notforhuman.net/id/{uuid}.json Query parameters for /listings.json and /listings.jsonl: industry, country (ISO 3166-1 alpha-2), city, keyword, verified=true|false, updated_since (ISO-8601), page (default 1), page_size (max 500). If there are 500 listings or fewer, /listings.json is the whole directory. If there are more, follow `next` until it is null, or page through /listings.jsonl. Use updated_since for incremental crawls. Accept: application/json on /b/{slug} and /directory returns the JSON representation. ## Verified verified means the listing owner paid the one-time verification fee (Stripe checkout). It does not mean the business is licensed, legitimate, or that every field was independently checked.