DIYgod/RSSHub · error · Error

Couldn't find this hashtag.

Error message

Couldn't find this hashtag.

What it means

getTagId queries Fansly's content-discovery tag endpoint and caches under `fansly:tag:<tag>`. If `response.mediaOfferSuggestionTag` is falsy the handler throws a generic Error (note: not InvalidParameterError, unlike the account lookup). An empty suggestion means Fansly has no matching tag entry.

Solutions

  1. Verify the tag spelling on fansly.com and use the canonical suggestion text.
  2. Clear or wait out the `fansly:tag:<wrong>` cache entry before retrying.
  3. When patching the route, consider throwing InvalidParameterError for consistency with the account lookup.
Defensive patterns

Strategy: validation

Validate before calling

async function fanslyTagExists(tag: string): Promise<boolean> {
  const { data } = await got(`${apiBaseUrl}/api/v1/contentdiscovery/media/tag`, { searchParams: { tag, 'ngsw-bypass': true } });
  return Boolean(data.response.mediaOfferSuggestionTag);
}

Prevention

When it happens

Trigger: `/fansly/hashtag/<tag>` where <tag> does not match any Fansly suggestion entry — typos, unused tags, or tags that exist only as free-text.

Common situations: Typo; the tag is too obscure to have a suggestion entry; a stale cached negative result.

Related errors


AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12). Data as JSON: /api/errors/d44c369387bc1eb7. Report an issue: GitHub.

Appendix: source

Thrown at lib/routes/fansly/utils.tsx:59

            contentSearch: '',
            'ngsw-bypass': true,
        },
    });

    return timeline.response;
};

const getTagId = (tag) =>
    cache.tryGet(`fansly:tag:${tag.toLowerCase()}`, async () => {
        const { data: tagResponse } = await got(`${apiBaseUrl}/api/v1/contentdiscovery/media/tag`, {
            searchParams: {
                tag,
                'ngsw-bypass': true,
            },
        });

        if (!tagResponse.response.mediaOfferSuggestionTag) {
            throw new Error("Couldn't find this hashtag.");
        }

        return tagResponse.response.mediaOfferSuggestionTag.id;
    });

const getTagSuggestion = async (tagId) => {
    const { data: suggestionResponse } = await got(`${apiBaseUrl}/api/v1/contentdiscovery/media/suggestionsnew`, {
        searchParams: {
            before: 0,
            after: 0,
            tagIds: tagId,
            limit: 25,
            offset: 0,
            'ngsw-bypass': true,
        },
    });

    return suggestionResponse.response;

View on GitHub (pinned to bed535e087)