Listing SEO Length Auditor for Online Sellers avatar

Listing SEO Length Auditor for Online Sellers

Pricing

$2.00 / 1,000 results

Go to Apify Store
Listing SEO Length Auditor for Online Sellers

Listing SEO Length Auditor for Online Sellers

Checks listing text you provide against length rules: Etsy titles (140 characters), tags (13 tags, 20 characters each, duplicates) and Shopify meta title and description target lengths (60 and 155). Returns one result per listing with each issue found. No scraping, no rewriting.

Pricing

$2.00 / 1,000 results

Rating

0.0

(0)

Developer

Augeo auto

Augeo auto

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Etsy and Shopify Listing Length Audit

Checks the listing text you pass in and tells you which fields are too long, missing or duplicated, with exact character counts.

  • Etsy listings: title length, number of tags, length of each tag, duplicate tags.
  • Shopify listings: meta title length and meta description length, against recommended target lengths.

The Actor reads only the JSON you give it. It makes no network request and opens no website.

Not affiliated with, endorsed by or sponsored by Etsy or Shopify.

What it does not do

  • It does not fetch or scrape Etsy or Shopify. It never opens a shop, a listing page or any other website. You paste or send the text yourself.
  • It does not rewrite text. It reports what is over length, missing or duplicated; the edits are yours.
  • It does not measure search ranking, traffic or sales, and passing every check says nothing about where a listing will appear in search.
  • It does not check keywords, spelling, images, prices, categories or policy compliance.

The exact rules

Etsy (limits)

FieldRuleIssue codeSeverity
titleMust not be emptymissingerror
titleAt most 140 charactersover_limiterror
tagsAt most 13 tagstoo_many_tagserror
tagsFewer than 13 tags: the unused slots are countedunused_tag_slotsinfo
each tagAt most 20 characters, spaces includedtag_too_longerror
tagsNo tag twice, ignoring capital lettersduplicate_tagerror

140, 13 and 20 are the limits of Etsy's listing form, reported with "limit_kind": "platform_limit".

FieldRuleIssue codeSeverity
meta_titleMust not be emptymissingerror
meta_titleRecommended target length: at most 60 charactersover_target_lengthwarning
meta_descriptionMust not be emptymissingerror
meta_descriptionRecommended target length: at most 155 charactersover_target_lengthwarning

60 and 155 are recommended target lengths chosen by this Actor to reduce the chance that a search engine cuts the text short. They are not Shopify field limits: Shopify accepts longer text, and a search engine may still shorten or replace text that is within the target. They are reported with "limit_kind": "recommended_target".

How characters are counted

  • Leading and trailing spaces are removed before counting.
  • Characters are counted by Unicode code point, so a simple emoji counts as one character. An emoji built from several code points (a flag, a skin-tone variant) counts as more than one.
  • Inside a tag, runs of spaces are collapsed to one space. Empty tags are dropped.
  • tags may be an array of strings or one string separated by commas or new lines.
  • platform is not case-sensitive. Any value other than etsy or shopify returns one unknown_platform issue and no other check is run.

Rules are verified by an automated fixtures script (tests/run_fixtures.js).

Input

One field, listings: an array of 1 to 1000 listing objects.

FieldUsed forTypeNotes
platformbothstring"etsy" or "shopify". Required.
idbothstring or numberOptional. Copied to the output unchanged.
titleEtsystringThe listing title. For Shopify it is only counted, not checked.
tagsEtsyarray of strings, or one stringComma or new-line separated when a string.
meta_titleShopifystringThe page title of the search engine listing.
meta_descriptionShopifystringThe meta description of the search engine listing.

Example input:

{
"listings": [
{
"id": "etsy-example-1",
"platform": "etsy",
"title": "Hand-poured soy candle, lavender and cedar, 8 oz amber jar",
"tags": [
"soy candle",
"lavender candle",
"cedar candle",
"amber jar candle",
"hand poured candle",
"scented candle",
"gift for her",
"housewarming gift",
"cozy home decor",
"vegan candle",
"8 oz candle",
"relaxing candle"
]
},
{
"id": "shopify-example-1",
"platform": "shopify",
"title": "Linen Cross-Back Apron",
"meta_title": "Linen Cross-Back Apron with Two Pockets, Hand-Sewn, One Size, Oat",
"meta_description": "Cross-back linen apron with two front pockets. Hand-sewn, one size, oat colour. Machine washable."
}
]
}

The products in this example are invented.

If listings is missing, is not an array, is empty or holds more than 1000 items, the run fails with a message that says why, writes nothing and charges nothing.

Output

One dataset item per listing, in the order you sent them.

FieldMeaning
idThe id you sent, or null.
platformThe platform in lower case, or null when none was given.
oktrue when the listing has no error and no warning. info notes do not make it false.
issuesA list of findings. Each has field, code, severity (error, warning or info), a plain-English message, actual (the measured value), limit (the number it was compared with) and limit_kind (platform_limit or recommended_target).
countstitle_chars, tag_count, longest_tag_chars, meta_title_chars, meta_description_chars.

Example output for the input above:

[
{
"id": "etsy-example-1",
"platform": "etsy",
"ok": true,
"issues": [
{
"field": "tags",
"code": "unused_tag_slots",
"severity": "info",
"message": "Listing has 12 tags; 1 of the 13 tag slots are unused.",
"actual": 12,
"limit": 13,
"limit_kind": "platform_limit"
}
],
"counts": {
"title_chars": 58,
"tag_count": 12,
"longest_tag_chars": 18,
"meta_title_chars": 0,
"meta_description_chars": 0
}
},
{
"id": "shopify-example-1",
"platform": "shopify",
"ok": false,
"issues": [
{
"field": "meta_title",
"code": "over_target_length",
"severity": "warning",
"message": "Shopify meta title is 65 characters, over the recommended 60-character target length by 5; search results may truncate it. This is a recommended length, not a Shopify field limit.",
"actual": 65,
"limit": 60,
"limit_kind": "recommended_target"
}
],
"counts": {
"title_chars": 22,
"tag_count": 0,
"longest_tag_chars": 0,
"meta_title_chars": 65,
"meta_description_chars": 97
}
}
]

Price per result

This Actor is pay per result. One result event is charged for each listing written to the dataset, so a run that audits 50 listings is charged 50 results. The price of one result is the amount shown on the Pricing tab of this Actor's page in the Apify Store. A run that fails input validation charges nothing. If you set a maximum charge for a run and it is reached, the run stops early and its status message says how many listings were audited.

Data and privacy

The Actor keeps no data of its own. Results are written to the default dataset of your run in your Apify account, under your account's retention settings. Do not put personal data in the input; the checks need only listing text.

About

The code, the rules table and this README were drafted with AI assistance.