Media playback is unsupported on your device
Media captionA montage of some of the major moments of the election night in Wales

Labour has fallen short of a majority in the Welsh Assembly as UKIP won its first seats in the Senedd.

Former Tory MPs Neil Hamilton and Mark Reckless were among seven UKIP AMs elected via the regional lists.

Labour remains the largest party with 29 of the 60 seats in Cardiff Bay, and suffered the shock loss of Leighton Andrews to Plaid Cymru leader Leanne Wood in Rhondda.

Plaid won 12 seats, the Conservatives 11, and the Liberal Democrats one.

Kirsty Williams increased the Lib Dem's majority in Brecon and Radnorshire but announced she was stepping down as party leader, saying she had to "take responsibility" for the Lib Dem losses.

It is understood the new assembly could meet for the first time next week.

  • As it happened: Welsh Assembly election results
  • As it happened: Welsh Assembly election reaction
Media playback is unsupported on your device
Media captionBBC Wales political reporter Dan Davies considers Labour's options in the Senedd after it failed to secure a majority

Labour's UK leader Jeremy Corbyn said he wanted to "congratulate the Labour Party in Wales for its excellent results".

First Minister Carwyn Jones said Labour was seeking the views of opposition parties, although senior party sources played down the idea of any formal coalition talks.

Mr Jones said he wanted to avoid "many weeks of uncertainty" and that the public would be looking to Labour to form an administration.

He told reporters on Friday he was talking to the sole remaining Lib Dem AM Ms Williams, and was also seeking Plaid Cymru's views.

Media playback is unsupported on your device
Media captionFirst Minister Carwyn Jones said Labour had confounded poll predictions

"We have to wait and see what the views of other parties might be," he said.

"I've made it clear we can't work with the Tories or UKIP in terms of a coalition - of course not, they're far too far to the right of us.

"[We are] talking obviously to Kirsty Williams, seeing what the views of Plaid Cymru are - we don't know, there are different views within Plaid Cymru.

"And so there are very early days yet, but people will look to us to form a government, as by far the largest party.

"We have to do that fairly quickly," Mr Jones added.

"We've got a steel crisis that has to be dealt with and the last thing that Wales needs is a period of uncertainty for many weeks."

A senior Labour MP said the party did not need to do a deal with Plaid Cymru, a party Labour shared power with between 2007 and 2011.

Shadow Work and Pensions Secretary Owen Smith told the BBC the decision was "a question for Carwyn and his ministers in the assembly".

"I'm not going to tell them what they should do, but I think they've probably got enough to govern on their own, if they wish," said the Pontypridd MP.

"I certainly don't think they need to forge any sort of alliance with Plaid Cymru."

Plaid leader Leanne Wood said she could not see how her party could be in the business of "propping up" Labour "in any way".

"But I want to take time to reflect, to speak to my colleagues and we will shortly decide the strategy for the next period in Plaid Cymru's development," she added.

Welsh Secretary Alun Cairns congratulated Mr Jones on his election success, saying he wanted to work with the new Welsh Government to deliver "economic security" for people in Wales.

He called on all parties to "put aside political differences and get on with the big job of delivering projects that will really benefit people's lives".

Media playback is unsupported on your device
Media captionNathan Gill hailed a significant breakthrough for UKIP

Reacting to UKIP's first ever assembly seats, party leader Nigel Farage said: "It is a victory not just for the party or myself but especially one for our leader in Wales, Nathan Gill.

"He is an honest, decent, hard working man and I have found him to be a loyal ally at all times.

"I want him to lead our now large voice in Wales to campaign for Brexit", he added, referring to the referendum on UK membership of the European Union on 23 June.

Mr Hamilton, who lost his seat as a Conservative MP in the 1997 general election, predicted assembly politics would never be the same again with UKIP at the Senedd.

"This has been quite a surprising turn of events for me," he said.

Media playback is unsupported on your device
Media captionNeil and Christine Hamilton talk about their return to politics

"I hadn't anticipated at the age of 67 that I would once again be elected to public office, particularly after I had been liberated from it so spectacularly in 1997 by the electorate."

Later, when asked about Mr Farage's reported unhappiness at his selection as a candidate, Mr Hamilton told the BBC: "We will all work together as a team, regardless of things that have divided us hitherto."

The shock result of the election was when Ms Wood ousted Labour's Public Services Minister Leighton Andrews in Rhondda.

Media playback is unsupported on your device
Media captionPlaid Cymru leader Leanne Wood said her party would not be "propping up" Labour after the election.

She said her victory, which was a 24% swing from Labour to Plaid, was a "new dawn" for Rhondda after claiming 11,891 votes - nearly 3,500 more than Mr Andrews.

"To win here, in the Rhondda, to win where you've lived all your life and grown up is a real honour," she added.

It was the only constituency seat to change hands in the election.

Finance Minister Jane Hutt had a close result in Vale of Glamorgan, where her majority over the Tories was cut from nearly 4,000 to 777.

Huw Irranca-Davies, who quit as a Labour MP to stand in the assembly election, retained Ogmore for the party.

Media playback is unsupported on your device
Media captionKirsty Williams kept her seat but the four other Lib Dem AMs lost

It was a disappointing night for the Conservatives, who failed to win any of their target seats and fell into third place behind Plaid Cymru.

While the Tories took Gower and Vale of Clwyd from Labour at the 2015 general election, the party failed to capitalise on either in the assembly poll.

They also failed to capture Labour-held Cardiff North or Vale of Glamorgan, and fell from 14 to 11 seats in total.

Welsh Conservative leader Andrew RT Davies said he was "proud that we have fought a positive and engaging campaign", and claimed the party had some "strong results" with "clear momentum in seats we have never won at an assembly level".

But an ex-Conservative AM called the party's performance "poor" and said Mr Davies should now "consider" whether he should stay as leader.

Former Welsh Conservative health and education spokesman Jonathan Morgan said: "The results were a mixed bag but it's disappointing to go backwards in Cardiff North and overall it's a poor performance."

Monmouth AM Nick Ramsay said the party's problems could not be "brushed under the table" and the leadership needed to be discussed, but he backed Mr Davies after a "difficult" campaign.

The Conservative assembly group will meet on Monday to discuss strategy.

Plaid Cymru's total went up from 11 to 12 seats, including the return of former MP Adam Price to frontline politics as the new AM for Carmarthen East and Dinefwr.

@-webkit-keyframes spinnerRotate { from{-webkit-transform:rotate(0deg);} to{-webkit-transform:rotate(360deg);} } @-moz-keyframes spinnerRotate { from{-moz-transform:rotate(0deg);} to{-moz-transform:rotate(360deg);} } @-ms-keyframes spinnerRotate { from{-ms-transform:rotate(0deg);} to{-ms-transform:rotate(360deg);} } .bbc-news-visual-journalism-loading-spinner { display: block; margin: 10px auto; width: 33px; height: 33px; max-width: 33px; -webkit-animation-name: spinnerRotate; -webkit-animation-duration: 5s; -webkit-animation-iteration-count: infinite; -webkit-animation-timing-function: linear; -moz-animation-name: spinnerRotate; -moz-animation-duration: 5s; -moz-animation-iteration-count: infinite; -moz-animation-timing-function: linear; -ms-animation-name: spinnerRotate; -ms-animation-duration: 5s; -ms-animation-iteration-count: infinite; -ms-animation-timing-function: linear; background-image: url('data:image/gif;base64,R0lGODlhIQAhALMAAMPDw/Dw8BAQECAgIICAgHBwcKCgoDAwMFBQULCwsGBgYEBAQODg4JCQkAAAAP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFFOTcwNTgzMDlCMjExRTQ4MDU3RThBRkIxMjYyOEYyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFFOTcwNTg0MDlCMjExRTQ4MDU3RThBRkIxMjYyOEYyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MUU5NzA1ODEwOUIyMTFFNDgwNTdFOEFGQjEyNjI4RjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MUU5NzA1ODIwOUIyMTFFNDgwNTdFOEFGQjEyNjI4RjIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQAAAAAACwAAAAAIQAhAAAE0vDJSScguOrNE3IgyI0bMIQoqUoF6q5jcLigsCzwJrtCAeSjDwoRAI4aLoNxxBCglEtJoFGUKFCEqCRxKkidoIP20aoVDaifFvB8XEGDseQEUjzoDq+87IijEnIPCSlpgWwhDIVyhyKKY4wOD3+BgyF3IXpjfHFvfYF4dmghalGQSgFgDmJaM2ZWWFEEKHYSTW1AojUMFEi3K7kgDRpCIUQkAcQgCDqtIT2kFgWpYVUaOzQ2NwvTIQfVHHw04iCZKibjNAPQMB7oDgiAixjzBOsbEQA7'); }define('vjCutsTheMustard', function cutsTheMustard() { return ( document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#BasicStructure', '1.1') && 'querySelector' in document && 'localStorage' in window && 'addEventListener' in window );});
Click to see content: voter
require(["jquery-1", "istats-1"], function ($, istats) { $(function () { var monitorScrolling = function (ev) { if (isElementInViewport(document.getElementById('ns_chart_voter'))) { istats.log( "idt-content", "chart-entered-view", { "project" : "voter", "page" : window.location.href }); window.clearInterval(intervalID); } }; var isElementInViewport = function (el) { var rect = el.getBoundingClientRect(); return ( rect.top >= 0 && rect.left >= 0 && rect.bottom = 0 && rect.bottom