diff --git a/feeds_imagegrabber.api.php b/feeds_imagegrabber.api.php
new file mode 100644
index 0000000..88f46de
--- /dev/null
+++ b/feeds_imagegrabber.api.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Runs before the image is fetched from the source page.
+ *
+ * This can be used to alter the image URL, or exclude certain images based on their URL or size.
+ *
+ * @param object $entity The entity being saved
+ * @param string $url The URL of the image that will be downloaded.
+ * @param integer $size The file size of the image.
+ *
+ * @see my_source_get_source().
+ * @see locale_feeds_parser_sources_alter().
+ */
+function hook_feeds_imagegrabber_image_url_alter(&$url, &$entity, $size) {
+
+  // Example: If the image URLs have .ashx extensions (an ASP.NET script that outputs an image),
+  // change the extension to .jpg. This will only work if the .jpg files also exist on the remote server.
+  $url = str_replace('.ashx', '.jpg', $url);
+
+}
diff --git a/feeds_imagegrabber.module b/feeds_imagegrabber.module
index 540e963..68653ea 100644
--- a/feeds_imagegrabber.module
+++ b/feeds_imagegrabber.module
@@ -226,6 +226,9 @@ function feeds_imagegrabber_feeds_set_target(FeedsSource $source, $entity, $targ
       // Feeds will handle encoding spaces for retrieval and replacing spaces
       // with underscores when saving to the file system.
       $url = rawurldecode($url);
+
+      drupal_alter('feeds_imagegrabber_image_url', $url, $entity, $size);
+
       $enclosure = new FeedsEnclosure($url, 'application/octet-stream');
       if (($file = $enclosure->getFile($target_dir)) && ($file = feeds_imagegrabber_is_image($file)) && !count(feeds_imagegrabber_widget_file_validator($file, $instance_info))) {
         $field['und'][$image_count] = (array)$file;
