> For the complete documentation index, see [llms.txt](https://ae-docs.keywordrush.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ae-docs.keywordrush.com/supported-shops-and-custom-parsers/customparsers.md).

# Ordering a custom parser

## Ordering a custom parser

Affiliate Egg reads most shops automatically — there's no fixed list of supported stores (see [Is your shop supported?](/supported-shops-and-custom-parsers/supported-shops.md)). But a custom parser is still worth ordering in a few cases:

* the shop's product pages carry **no structured data** — no LD+JSON or microdata for Affiliate Egg to read;
* you want to import from **search or category pages that load their results with JavaScript**, where the product links aren't in the page's initial HTML;
* you need **richer product data** — extra attributes or specifications the generic reader doesn't pick up.

If any of these apply, we can build a parser for you.

**Cost** — $25 per parser. Each store needs its own parser, and you can use it on any of your sites.

**How it works**

1. **Send your list.** [Email us](https://www.keywordrush.com/contact) the stores you need.
2. **Get an invoice.** We review the list and send you an invoice.
3. **Receive the parsers.** They usually take 1–2 days to build.

**Installing them**

* Copy the parser files to `/wp-content/affegg-parsers/` on your server.
* From there they work exactly like the built-in parsers.

**Guarantee** — every custom parser comes with a 6-month guarantee. If it needs fixing in that time, we'll adjust it for free.

## Write your own parser

Prefer to build one yourself? Here's what's involved.

1. **Skills needed.** You'll need PHP and XPath.
2. **Where parsers live.** Put your custom parsers in:

   ```
   /wp-content/affegg-parsers/
   ```
3. **A working example.** Study the built-in parsers for reference:

   ```
   /wp-content/plugins/affiliate-egg/application/shop/parsers/
   ```
4. **File naming.** The filename must match the class name inside the parser.
5. **File header.** Start the file with a header block:

   ```php
   /*
     URI: https://www.adidas.fr
     SEARCH URI: https://www.adidas.fr/search?q=%KEYWORD%
    */
   ```
6. **Required methods.** Each parser class must implement:

   ```php
   parseCatalog();
   parseTitle();
   parseDescription();
   parsePrice();
   parseImg();
   parseImgLarge();
   parseOldPrice();
   parseManufacturer();
   parseExtra();
   isInStock();
   ```
7. **Extra data.** Use `parseExtra()` to capture anything beyond the standard fields.
