diff --git a/bridges/DarkReadingBridge.php b/bridges/DarkReadingBridge.php
index 93deb9ce..8fe242dd 100644
--- a/bridges/DarkReadingBridge.php
+++ b/bridges/DarkReadingBridge.php
@@ -33,7 +33,8 @@ class DarkReadingBridge extends FeedExpander {
 				'Insider Threats' => '663_Insider%20Threats',
 				'Vulnerability Management' => '664_Vulnerability%20Management',
 			)
-		)
+		),
+		'limit' => self::LIMIT,
 	));
 
 	public function collectData(){
@@ -48,7 +49,8 @@ class DarkReadingBridge extends FeedExpander {
 		if ($feed_id != '000') {
 			$feed_url .= '?f_n=' . $feed_id . '&f_ln=' . $feed_name;
 		}
-		$this->collectExpandableDatas($feed_url, 20);
+		$limit = $this->getInput('limit') ?? 10;
+		$this->collectExpandableDatas($feed_url, $limit);
 	}
 
 	protected function parseItem($newsItem){
diff --git a/bridges/FindACrewBridge.php b/bridges/FindACrewBridge.php
index 07912680..8282ead1 100644
--- a/bridges/FindACrewBridge.php
+++ b/bridges/FindACrewBridge.php
@@ -26,7 +26,8 @@ class FindACrewBridge extends BridgeAbstract {
 			'distance' => array(
 				'name' => 'Limit boundary of search in KM',
 				'title' => 'Boundary of the search in kilometers when using longitude and latitude'
-			)
+			),
+			'limit' => self::LIMIT,
 		)
 	);
 
@@ -59,7 +60,8 @@ class FindACrewBridge extends BridgeAbstract {
 		$html = getSimpleHTMLDOM($url, $header, $opts) or returnClientError('No results for this query.');
 
 		$annonces = $html->find('.css_SrhRst');
-		foreach ($annonces as $annonce) {
+		$limit = $this->getInput('limit') ?? 10;
+		foreach (array_slice($annonces, 0, $limit) as $annonce) {
 			$item = array();
 
 			$link = parent::getURI() . $annonce->find('.lstsum-btn-con a', 0)->href;
diff --git a/bridges/FolhaDeSaoPauloBridge.php b/bridges/FolhaDeSaoPauloBridge.php
index 181bd93f..6506fdba 100644
--- a/bridges/FolhaDeSaoPauloBridge.php
+++ b/bridges/FolhaDeSaoPauloBridge.php
@@ -63,6 +63,7 @@ class FolhaDeSaoPauloBridge extends FeedExpander {
 			$feed_url = self::URI . '/' . $this->getInput('feed');
 		}
 		Debug::log('URL: ' . $feed_url);
-		$this->collectExpandableDatas($feed_url, $this->getInput('amount'));
+		$limit = $this->getInput('amount');
+		$this->collectExpandableDatas($feed_url, $limit);
 	}
 }
diff --git a/bridges/GQMagazineBridge.php b/bridges/GQMagazineBridge.php
index 8fb71dd7..cacd6159 100644
--- a/bridges/GQMagazineBridge.php
+++ b/bridges/GQMagazineBridge.php
@@ -32,6 +32,7 @@ class GQMagazineBridge extends BridgeAbstract
 			'required' => true,
 			'exampleValue' => 'sexe/news'
 		),
+		'limit' => self::LIMIT,
 	));
 
 	const REPLACED_ATTRIBUTES = array(
@@ -76,7 +77,12 @@ class GQMagazineBridge extends BridgeAbstract
 
 		// Since GQ don't want simple class scrapping, let's do it the hard way and ... discover content !
 		$main = $html->find('main', 0);
+		$limit = $this->getInput('limit') ?? 10;
 		foreach ($main->find('a') as $link) {
+			if (count($this->items) >= $limit) {
+				break;
+			}
+
 			$uri = $link->href;
 			$date = $link->parent()->find('time', 0);
 
diff --git a/bridges/InternetArchiveBridge.php b/bridges/InternetArchiveBridge.php
index 969776fe..b9f9d274 100644
--- a/bridges/InternetArchiveBridge.php
+++ b/bridges/InternetArchiveBridge.php
@@ -23,7 +23,8 @@ class InternetArchiveBridge extends BridgeAbstract {
 					'Web Archives' => 'web-archive',
 				),
 				'defaultValue' => 'uploads',
-			)
+			),
+			'limit' => self::LIMIT,
 		)
 	);
 
@@ -72,7 +73,8 @@ class InternetArchiveBridge extends BridgeAbstract {
 		if ($this->getInput('content') !== 'posts') {
 			$detailsDivNumber = 0;
 
-			foreach ($html->find('div.results > div[data-id]') as $index => $result) {
+			$results = $html->find('div.results > div[data-id]');
+			foreach ($results as $index => $result) {
 				$item = array();
 
 				if (in_array($result->class, $this->skipClasses)) {
@@ -110,6 +112,11 @@ class InternetArchiveBridge extends BridgeAbstract {
 				}
 
 				$detailsDivNumber++;
+
+				$limit = $this->getInput('limit') ?? 10;
+				if (count($this->items) >= $limit) {
+					break;
+				}
 			}
 		}
 
@@ -302,7 +309,7 @@ EOD;
 
 			$items[] = $item;
 
-			if (count($items) >= 10) {
+			if (count($items) >= $this->getInput('limit') ?? 10) {
 				break;
 			}
 		}
diff --git a/bridges/NextInpactBridge.php b/bridges/NextInpactBridge.php
index c3cca30d..4cac7769 100644
--- a/bridges/NextInpactBridge.php
+++ b/bridges/NextInpactBridge.php
@@ -55,7 +55,8 @@ class NextInpactBridge extends FeedExpander {
 				'Hide Brief' => '1',
 				'Only Brief' => '2'
 			)
-		)
+		),
+		'limit' => self::LIMIT,
 	));
 
 	public function collectData(){
@@ -80,7 +81,9 @@ class NextInpactBridge extends FeedExpander {
 			$feed = 'params';
 		}
 
-		$this->collectExpandableDatas($base_uri . 'rss/' . $feed . '.xml' . $args);
+		$url = sprintf('%srss/%s.xml%s', $base_uri, $feed, $args);
+		$limit = $this->getInput('limit') ?? 10;
+		$this->collectExpandableDatas($url, $limit);
 	}
 
 	protected function parseItem($newsItem){
diff --git a/bridges/OpenlyBridge.php b/bridges/OpenlyBridge.php
index 8aa036ea..3395905d 100644
--- a/bridges/OpenlyBridge.php
+++ b/bridges/OpenlyBridge.php
@@ -130,7 +130,9 @@ class OpenlyBridge extends BridgeAbstract {
 			$this->feedTitle = $html->find('a.tooltipitem', 0)->plaintext;
 		}
 
-		foreach($html->find('div.item') as $div) {
+		$items = $html->find('div.item');
+		$limit = 5;
+		foreach(array_slice($items, 0, $limit) as $div) {
 			$this->items[] = $this->getArticle($div->find('a', 0)->href);
 
 			if (count($this->items) >= $this->itemLimit) {
diff --git a/bridges/PcGamerBridge.php b/bridges/PcGamerBridge.php
index db5a9ded..95261d9c 100644
--- a/bridges/PcGamerBridge.php
+++ b/bridges/PcGamerBridge.php
@@ -7,11 +7,18 @@ class PcGamerBridge extends BridgeAbstract
 		updates and news on all your favorite PC gaming franchises.';
 	const MAINTAINER = 'IceWreck, mdemoss';
 
+	const PARAMETERS = [
+		[
+			'limit' => self::LIMIT,
+		]
+	];
+
 	public function collectData()
 	{
 		$html = getSimpleHTMLDOMCached($this->getURI(), 300);
 		$stories = $html->find('a.article-link');
-		foreach ($stories as $element) {
+		$limit = $this->getInput('limit') ?? 10;
+		foreach (array_slice($stories, 0, $limit) as $element) {
 			$item = array();
 			$item['uri'] = $element->href;
 			$articleHtml = getSimpleHTMLDOMCached($item['uri']);
diff --git a/bridges/UnogsBridge.php b/bridges/UnogsBridge.php
index cac18752..f03555b4 100644
--- a/bridges/UnogsBridge.php
+++ b/bridges/UnogsBridge.php
@@ -17,7 +17,8 @@ class UnogsBridge extends BridgeAbstract {
 					'What\'s New' => 'new last 7 days',
 					'Expiring' => 'expiring'
 				)
-			)
+			),
+			'limit' => self::LIMIT,
 		),
 		'Global' => array(),
 		'Country' => array(
@@ -160,8 +161,17 @@ EOD;
 				break;
 		}
 
-		$api_url = self::URI . '/api/search?query=' . urlencode($feed)
-				. ($country_code ? '&countrylist=' . $country_code : '') . '&limit=30';
+		$limit = $this->getInput('limit') ?? 30;
+
+		// https://rapidapi.com/unogs/api/unogsng/details
+		$api_url = sprintf(
+			'%s/api/search?query=%s%s&limit=%s',
+			self::URI,
+			urlencode($feed),
+			$country_code ? '&countrylist=' . $country_code : '',
+			$limit
+		);
+
 		$json_data = $this->getJSON($api_url);
 		$movies = $json_data['results'];
 
diff --git a/bridges/WeLiveSecurityBridge.php b/bridges/WeLiveSecurityBridge.php
index 59a094a7..14af1ab3 100644
--- a/bridges/WeLiveSecurityBridge.php
+++ b/bridges/WeLiveSecurityBridge.php
@@ -5,6 +5,11 @@ class WeLiveSecurityBridge extends FeedExpander {
 	const NAME = 'We Live Security';
 	const URI = 'https://www.welivesecurity.com/';
 	const DESCRIPTION = 'Returns the newest articles.';
+	const PARAMETERS = [
+		[
+			'limit' => self::LIMIT,
+		],
+	];
 
 	protected function parseItem($item){
 		$item = parent::parseItem($item);
@@ -27,6 +32,7 @@ class WeLiveSecurityBridge extends FeedExpander {
 
 	public function collectData(){
 		$feed = static::URI . 'feed/';
-		$this->collectExpandableDatas($feed);
+		$limit = $this->getInput('limit') ?? 10;
+		$this->collectExpandableDatas($feed, $limit);
 	}
 }
diff --git a/bridges/WiredBridge.php b/bridges/WiredBridge.php
index d66bf7ff..b15f781f 100644
--- a/bridges/WiredBridge.php
+++ b/bridges/WiredBridge.php
@@ -22,7 +22,8 @@ class WiredBridge extends FeedExpander {
 				'WIRED Guides' => 'wired-guide',		// /feed/tag/wired-guide/latest/rss
 				'Photo' => 'photo'						// /feed/category/photo/latest/rss
 			)
-		)
+		),
+		'limit' => self::LIMIT,
 	));
 
 	public function collectData(){
@@ -42,7 +43,8 @@ class WiredBridge extends FeedExpander {
 		}
 		$feed_url .= 'rss';
 
-		$this->collectExpandableDatas($feed_url);
+		$limit = $this->getInput('limit') ?? -1;
+		$this->collectExpandableDatas($feed_url, $limit);
 	}
 
 	protected function parseItem($newsItem){
diff --git a/bridges/ZDNetBridge.php b/bridges/ZDNetBridge.php
index 13478029..927e37ae 100644
--- a/bridges/ZDNetBridge.php
+++ b/bridges/ZDNetBridge.php
@@ -156,7 +156,8 @@ class ZDNetBridge extends FeedExpander {
 					'ZDNet Government' => 'blog/government'
 				)
 			)
-		)
+		),
+		'limit' => self::LIMIT,
 	));
 
 	public function collectData(){
@@ -167,7 +168,8 @@ class ZDNetBridge extends FeedExpander {
 			$baseUri = str_replace('www.', 'downloads.', $baseUri);
 		}
 		$url = $baseUri . trim($feed, '/') . '/rss.xml';
-		$this->collectExpandableDatas($url);
+		$limit = $this->getInput('limit') ?? 10;
+		$this->collectExpandableDatas($url, $limit);
 	}
 
 	protected function parseItem($item){
diff --git a/lib/BridgeAbstract.php b/lib/BridgeAbstract.php
index 82f866aa..0971b13c 100644
--- a/lib/BridgeAbstract.php
+++ b/lib/BridgeAbstract.php
@@ -87,6 +87,16 @@ abstract class BridgeAbstract implements BridgeInterface {
 	 */
 	const TEST_DETECT_PARAMETERS = array();
 
+	/**
+	 * This is a convenient const for the limit option in bridge contexts.
+	 * Can be inlined and modified if necessary.
+	 */
+	protected const LIMIT = [
+		'name'          => 'Limit',
+		'type'          => 'number',
+		'title'         => 'Maximum number of items to return',
+	];
+
 	/**
 	 * Holds the list of items collected by the bridge
 	 *