# Penny API – Local Business Schema.org JSON-LD Generator

> Penny API – Local Business Schema.org JSON-LD Generator is a paid API for AI agents from pennyinpublic.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-09-14).

Generates validated schema.org LocalBusiness JSON-LD markup from structured business data, returning the JSON-LD object, a ready-to-embed script tag, and any validation warnings.

## Facts

- Endpoint: POST https://pennyinpublic.com/api/local-schema
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/penny-api-local-business-schema-org-json-ld-generator-2373459a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_TKv2OUOyLNm0_wczI_qYu

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability penny-api-local-business-schema-org-json-ld-generator-2373459a -d '<json body>'
```

Example prompt: Generate a schema.org LocalBusiness JSON-LD script tag for my coffee shop 'Morning Bloom', a Restaurant at 412 NW Oak Ave, Portland OR 97209, phone (503) 555-0192, open Mon-Fri 07:00-18:00 and Sat 08:00-15:00, priced at $$.

## When to prefer this

Choose this endpoint when you need deterministic, spec-compliant schema.org LocalBusiness JSON-LD generated from structured data — especially when you want validation warnings surfaced alongside output. Ideal for CMS plugins, SEO automation pipelines, or agents that need to embed structured data into web pages without manually constructing JSON-LD. Prefer over generic LLM-generated markup when correctness and schema.org conformance matter.

## Known failure modes

- Missing required `name` field returns an error response
- Unknown `businessType` value falls back to generic LocalBusiness and adds a warning rather than failing
- Geo coordinates outside valid lat/lng ranges are dropped with a warning
- Malformed openingHours strings may generate warnings but still produce output
- Invalid URL formats for `url`, `image`, or `sameAs` entries may produce warnings

## How this service works

Deterministic schema.org LocalBusiness JSON-LD generator with validation warnings. POST JSON {name, businessType, telephone, address fields, openingHours, ...}; returns {jsonld, scriptTag, warnings}. $0.05 per call.

## Output

Returns a JSON object containing: (1) `jsonld` — the fully formed schema.org LocalBusiness JSON-LD object ready for use, (2) `scriptTag` — an HTML `<script type='application/ld+json'>` string ready to paste into a page's `<head>`, and (3) `warnings` — an array of validation messages flagging unknown businessType values, out-of-range coordinates, missing recommended fields, or other issues detected during generation.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "geo": {
   "type": "object",
   "properties": {
    "latitude": {
     "type": "number"
    },
    "longitude": {
     "type": "number"
    }
   },
   "description": "Coordinates. Dropped with a warning if out of range."
  },
  "url": {
   "type": "string",
   "description": "Business website URL."
  },
  "name": {
   "type": "string",
   "description": "REQUIRED. Business name."
  },
  "image": {
   "type": "string",
   "description": "Image URL."
  },
  "sameAs": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "Profile URLs — Google Business Profile, Facebook, Yelp."
  },
  "telephone": {
   "type": "string",
   "description": "Public phone number."
  },
  "postalCode": {
   "type": "string"
  },
  "priceRange": {
   "type": "string",
   "description": "e.g. \"$$\"."
  },
  "description": {
   "type": "string",
   "description": "One-paragraph business description."
  },
  "businessType": {
   "type": "string",
   "description": "schema.org LocalBusiness subtype, e.g. Plumber, Restaurant, HairSalon. Unknown values fall back to LocalBusiness with a warning."
  },
  "openingHours": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "schema.org openingHours strings, e.g. \"Mo-Fr 08:00-17:00\"."
  },
  "addressRegion": {
   "type": "string",
   "description": "State or region code, e.g. OR."
  },
  "streetAddress": {
   "type": "string"
  },
  "addressCountry": {
   "type": "string",
   "description": "ISO country code, defaults to US."
  },
  "addressLocality": {
   "type": "string",
   "description": "City."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/penny-api-local-business-schema-org-json-ld-generator-2373459a/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from pennyinpublic.com](https://www.zero.xyz/host/pennyinpublic.com/llms.txt)
