Skip to content

JSON Feed Reference

JSON Feed is a syndication format based on JSON that provides a simple, straightforward way to publish feeds. Feedsmith provides full parsing and generation capabilities.

Versions1.0, 1.1
NamespacesNone (JSON-based format)

Functions

parseJsonFeed()

Parses JSON Feed content and returns a typed JSON Feed object.

typescript
import { parseJsonFeed } from 'feedsmith'

const jsonFeed = parseJsonFeed(jsonContent)
// Returns: object with all fields optional and dates as strings

// Limit number of items parsed
const jsonFeed = parseJsonFeed(jsonContent, { maxItems: 10 })

Parameters

ParameterTypeDescription
contentstringThe JSON Feed content to parse
optionsobjectOptional parsing settings

Options

OptionTypeDefaultDescription
maxItemsnumber-Limit the number of items parsed. Use 0 to skip items entirely, useful when only feed metadata is needed

Returns

object - Parsed JSON Feed with all fields optional and dates as strings

generateJsonFeed()

Generates JSON Feed from feed data.

typescript
import { generateJsonFeed } from 'feedsmith'

const json = generateJsonFeed(feedData, {
  lenient: true
})

Parameters

ParameterTypeDescription
dataobjectJSON Feed data to generate
optionsobjectOptional generation settings

Options

OptionTypeDefaultDescription
lenientbooleanfalseEnable lenient mode for relaxed validation, see Lenient Mode

Returns

object - Generated JSON Feed

detectJsonFeed()

Detects if the provided content is a JSON Feed.

Parameters

ParameterTypeDescription
contentstringThe content to check

Returns

boolean - true if content appears to be JSON Feed format

Example

typescript
import { detectJsonFeed } from 'feedsmith'

const isJsonFeed = detectJsonFeed(jsonContent)

Types

All JSON Feed types are available under the Json namespace:

typescript
import type { Json } from 'feedsmith/types'

// Access any type from the definitions below
type Feed = Json.Feed<Date>
type Item = Json.Item<Date>
type Author = Json.Author
type Attachment = Json.Attachment
// … see type definitions below for all available types

See the TypeScript guide for usage examples.

Type Definitions

INFO

TDate represents date fields in the type definitions. When parsing, dates are returned as strings in their original format (see Parsing › Handling Dates for more details). When generating, dates should be provided as JavaScript Date objects.

ts
export namespace Json {
  export type Author = {
    name?: string
    url?: string
    avatar?: string
  }

  export type Attachment = {
    url: string
    mime_type: string
    title?: string
    size_in_bytes?: number
    duration_in_seconds?: number
  }

  export type Item<TDate extends DateLike> = {
    id: string
    url?: string
    external_url?: string
    title?: string
    content_html?: string
    content_text?: string
    summary?: string
    image?: string
    banner_image?: string
    date_published?: TDate
    date_modified?: TDate
    tags?: Array<string>
    authors?: Array<Author>
    language?: string
    attachments?: Array<Attachment>
  } & ({ content_html: string } | { content_text: string })

  export type Hub = {
    type: string
    url: string
  }

  export type Feed<TDate extends DateLike> = {
    title: string
    home_page_url?: string
    feed_url?: string
    description?: string
    user_comment?: string
    next_url?: string
    icon?: string
    favicon?: string
    language?: string
    expired?: boolean
    hubs?: Array<Hub>
    authors?: Array<Author>
    items: Array<Item<TDate>>
  }
}